当前位置:首页 > React

react如何实现逻辑复用

2026-03-10 17:28:38React

实现逻辑复用的方法

高阶组件(HOC)
通过函数接收组件并返回新组件的方式复用逻辑。例如,一个权限校验的高阶组件可以包裹多个需要鉴权的页面组件,统一处理权限逻辑。

function withAuth(WrappedComponent) {
  return function(props) {
    const isAuthenticated = checkAuth();
    return isAuthenticated ? <WrappedComponent {...props} /> : <Redirect to="/login" />;
  };
}

自定义Hook
将可复用的状态逻辑提取为Hook。适合处理表单逻辑、数据获取等场景。自定义Hook必须以use开头命名。

function useFetch(url) {
  const [data, setData] = useState(null);
  useEffect(() => {
    fetch(url).then(res => res.json()).then(setData);
  }, [url]);
  return data;
}
// 使用:const userData = useFetch('/api/user');

Render Props
通过组件属性传递渲染函数,共享组件间的代码。适用于动态渲染内容或依赖注入的场景。

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

Context API
跨层级组件共享全局状态或配置。通过Provider提供数据,ConsumeruseContext消费数据。

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

组合组件
通过组件组合而非继承实现复用。例如将业务逻辑拆分为多个原子组件,通过props控制行为。

react如何实现逻辑复用

function Toggle({ children }) {
  const [on, setOn] = useState(false);
  return children({ on, toggle: () => setOn(!on) });
}
// 使用:<Toggle>{({ on, toggle }) => <Button onClick={toggle}>{on ? 'ON' : 'OFF'}</Button>}</Toggle>

选择建议

  • UI逻辑复用:优先使用组合组件或Render Props
  • 状态逻辑复用:自定义Hook或Context API
  • 横切关注点(如鉴权、日志):高阶组件
  • 复杂全局状态:Context API配合useReducer

每种方案各有适用场景,实际项目中常组合使用。例如用Context共享主题,用Hook封装数据请求,用HOC增强组件能力。

分享给朋友:

相关文章

vue如何实现mvvm

vue如何实现mvvm

Vue 实现 MVVM 的核心机制 Vue 的 MVVM(Model-View-ViewModel)实现依赖于数据绑定和响应式系统,通过以下核心机制完成: 数据劫持(响应式系统) Vue 使用 Ob…

vue如何实现分离

vue如何实现分离

Vue 实现组件分离的方法 Vue 可以通过多种方式实现组件分离,提升代码的可维护性和复用性。以下是几种常见的方法: 单文件组件 (SFC) Vue 的单文件组件(.vue 文件)将模板、脚本和样式…

vue如何实现滤镜

vue如何实现滤镜

Vue 实现滤镜的方法 在 Vue 中实现滤镜效果可以通过多种方式,以下是常见的几种方法: 使用 CSS filter 属性 通过 CSS 的 filter 属性可以直接为元素添加滤镜效果。在 Vu…

vue如何实现单选

vue如何实现单选

使用原生 HTML 单选按钮 在 Vue 中可以直接使用 HTML 的原生单选按钮,通过 v-model 绑定数据。 <template> <div>…

vue如何实现截图

vue如何实现截图

Vue 实现截图的方法 在 Vue 中实现截图功能可以通过多种方式完成,以下是几种常见的实现方法: 使用 html2canvas 库 html2canvas 是一个流行的 JavaScript 库,…

vue如何实现uuid

vue如何实现uuid

生成 UUID 的方法 在 Vue 中生成 UUID 可以通过第三方库或原生 JavaScript 实现。以下是几种常见方法: 使用 uuid 库 安装 uuid 库: npm install u…