当前位置:首页 > React

react实现组件复用

2026-01-26 22:50:50React

React 组件复用的常见方法

高阶组件 (HOC)
通过函数接受一个组件并返回一个新组件的方式实现逻辑复用。例如,一个日志记录的高阶组件可以这样实现:

function withLogging(WrappedComponent) {
  return function(props) {
    console.log('Rendered:', WrappedComponent.name);
    return <WrappedComponent {...props} />;
  };
}
const EnhancedComponent = withLogging(MyComponent);

自定义 Hook
将可复用的状态逻辑提取到自定义 Hook 中。例如,一个控制表单输入的 Hook:

react实现组件复用

function useFormInput(initialValue) {
  const [value, setValue] = useState(initialValue);
  const handleChange = (e) => setValue(e.target.value);
  return { value, onChange: handleChange };
}
// 使用
const nameInput = useFormInput('');

Render Props
通过组件的 children 或特定 prop 传递渲染逻辑。例如:

react实现组件复用

<DataProvider render={data => <ChildComponent data={data} />} />

组件组合 (Composition)
通过 props.children 或显式插槽实现内容分发:

function Card({ header, children }) {
  return (
    <div className="card">
      <div className="header">{header}</div>
      <div className="body">{children}</div>
    </div>
  );
}

方法对比与选择建议

  • HOC 适合横切关注点(如权限控制),但可能造成 props 命名冲突
  • Hook 是 React 16.8+ 的推荐方式,能解决 HOC 的嵌套问题
  • Render Props 灵活但可能导致嵌套过深
  • 组合模式 适合 UI 层面的复用,保持组件层次清晰

最佳实践

  1. 优先使用自定义 Hook 处理状态逻辑
  2. 简单 UI 复用使用组合模式
  3. 复杂场景可组合使用多种模式
  4. 避免过度抽象,在重复代码出现三次以上再考虑复用

对于 TypeScript 项目,需要为高阶组件或 Hook 添加泛型类型支持:

function withLoading<T>(Component: React.ComponentType<T>) {
  return (props: T & { isLoading: boolean }) => (
    isLoading ? <Spinner /> : <Component {...props} />
  );
}

标签: 组件复用
分享给朋友:

相关文章

vue实现多级组件

vue实现多级组件

Vue 多级组件实现方法 在 Vue 中实现多级组件通常涉及父子组件通信、动态组件或递归组件等技术。以下是几种常见实现方式: 父子组件嵌套 通过逐层嵌套组件实现多级结构,适用于固定层级场景:…

vue组件传值实现分页

vue组件传值实现分页

Vue组件传值实现分页的方法 在Vue中实现分页功能,通常需要父子组件之间的数据传递。以下是几种常见的传值方式: 使用props传递数据 父组件通过props向子组件传递当前页码和总页数等分页信息:…

vue实现拖拽实现组件嵌套

vue实现拖拽实现组件嵌套

实现拖拽组件嵌套的核心思路 Vue中实现拖拽组件嵌套需要结合拖拽库(如vuedraggable)和组件递归渲染。核心在于动态管理嵌套数据结构,并通过事件传递实现层级更新。 安装必要依赖 推荐使用vu…

vue实现广告组件

vue实现广告组件

vue实现广告组件的方法 使用动态组件实现 在Vue中可以通过动态组件的方式加载广告组件,根据不同的条件展示不同的广告内容。动态组件使用<component :is="currentCompon…

react组件如何通讯

react组件如何通讯

React 组件通讯方式 React 组件间的通讯方式主要包括以下几种方法,适用于不同场景下的数据传递和状态管理需求。 父子组件通讯(Props 传递) 父组件通过 props 向子组件传递数据或回…

组件elementui

组件elementui

ElementUI 简介 ElementUI 是一套基于 Vue.js 的桌面端组件库,由饿了么前端团队开发并开源。它提供了丰富的 UI 组件(如按钮、表单、表格等),适合快速构建企业级中后台产品。…