当前位置:首页 > React

react实现组件方式

2026-01-26 17:58:45React

React 实现组件的常见方式

React 提供了多种实现组件的方式,以下是主要的几种方法:

函数组件 函数组件是使用 JavaScript 函数定义的组件,简洁明了,适合无状态或使用 Hooks 的场景:

function Greeting(props) {
  return <h1>Hello, {props.name}</h1>;
}

类组件 类组件通过继承 React.Component 实现,支持生命周期方法和状态管理:

class Greeting extends React.Component {
  render() {
    return <h1>Hello, {this.props.name}</h1>;
  }
}

箭头函数组件 箭头函数语法可以更简洁地定义函数组件:

react实现组件方式

const Greeting = (props) => <h1>Hello, {props.name}</h1>;

高阶组件 (HOC) 高阶组件是一个函数,接收一个组件并返回一个新组件,用于复用逻辑:

function withLogging(WrappedComponent) {
  return class extends React.Component {
    componentDidMount() {
      console.log('Component mounted');
    }
    render() {
      return <WrappedComponent {...this.props} />;
    }
  };
}

Render Props 通过 prop 传递渲染逻辑,实现组件间的代码共享:

react实现组件方式

class MouseTracker extends React.Component {
  state = { x: 0, y: 0 };
  handleMouseMove = (event) => {
    this.setState({ x: event.clientX, y: event.clientY });
  };
  render() {
    return (
      <div onMouseMove={this.handleMouseMove}>
        {this.props.render(this.state)}
      </div>
    );
  }
}

自定义 Hooks 封装可复用的状态逻辑,供多个组件使用:

function useCounter(initialValue) {
  const [count, setCount] = useState(initialValue);
  const increment = () => setCount(count + 1);
  return { count, increment };
}

复合组件 通过组合多个组件实现复杂功能,如 Context API 提供者/消费者模式:

const ThemeContext = React.createContext('light');
function App() {
  return (
    <ThemeContext.Provider value="dark">
      <Toolbar />
    </ThemeContext.Provider>
  );
}

无渲染组件 只处理逻辑不渲染 UI 的组件,通过子组件或 render prop 输出结果:

function DataFetcher({ url, children }) {
  const [data, setData] = useState(null);
  useEffect(() => {
    fetch(url).then(res => res.json()).then(setData);
  }, [url]);
  return children(data);
}

每种方式适用于不同场景,函数组件和 Hooks 是现代 React 开发的主流选择,而类组件在维护旧代码时仍会见到。高阶组件和 render props 适用于复杂逻辑复用,自定义 Hooks 提供了更灵活的逻辑共享方式。

标签: 组件方式
分享给朋友:

相关文章

vue实现拖拽实现组件嵌套

vue实现拖拽实现组件嵌套

Vue 拖拽实现组件嵌套 使用 Vue 实现拖拽组件嵌套功能可以通过原生 HTML5 拖拽 API 或第三方库如 vuedraggable 实现。以下是两种方法的详细说明: 使用 HTML5 拖拽…

vue实现下拉框组件

vue实现下拉框组件

Vue 下拉框组件实现 基础实现 创建基础下拉框组件,使用v-model实现双向数据绑定: <template> <div class="dropdown"> &…

vue实现折叠组件

vue实现折叠组件

实现折叠组件的基本思路 在Vue中实现折叠组件通常需要利用动态绑定和条件渲染。核心是通过控制一个布尔值状态来决定内容是否显示,并添加过渡动画提升用户体验。 基础实现方法 使用v-show或v-if控…

vue 组件实现 遮罩

vue 组件实现 遮罩

Vue 组件实现遮罩层的方法 基础遮罩层实现 创建一个简单的遮罩层组件,使用绝对定位覆盖整个视口。以下是一个基础实现: <template> <div class="mask"…

vue实现日历组件

vue实现日历组件

Vue 日历组件实现步骤 基础结构搭建 使用Vue 3的Composition API或Options API创建组件框架。核心结构包括年份/月份切换按钮、星期标题栏和日期网格。 <templ…

react如何刷新组件

react如何刷新组件

刷新 React 组件的常见方法 使用状态更新触发重新渲染 通过修改组件的状态(state),React 会自动触发重新渲染。例如: const [count, setCount] = useSta…