第48节—— redux 中的 compose——了解

一、概念

compose 是 Redux 提供的一个辅助函数,它的作用是将多个函数组合成一个新的函数,使这些函数能够按照从右到左的顺序依次执行。

二、简单例子

我们先使用 compose 函数将三个函数 f、g 和 h 组合成一个新的函数 composedFunc。在组合后的函数中,输入值 5 将按照 h、g、f 的顺序依次执行,输出结果为 4

jsx 复制代码
import { compose } from 'redux';

const f = (x) => x + 1;
const g = (x) => x * 2;
const h = (x) => x - 3;

const composedFunc = compose(f, g, h);
console.log(composedFunc(5)); // 输出结果为 5

三、在react中的应用

当我们需要将多个高阶组件(HOC)组合起来时,就可以使用compose 函数。可以避免高阶组件嵌套的问题。

在这个例子中,withUser, withRouter, withStyle 都是高阶组件,它们都接收一个组件作为参数,并返回一个新的组件。以下是伪代码 理解其意思即可

jsx 复制代码
import { compose } from 'redux';
// 可以帮助我们在组件中访问样式
import { withStyle } from 'react-with-style';
// 可以帮助我们在组件中访问路由信息
import { withRouter } from 'react-router';
// 可以帮助我们在组件中访问用户的信息
import { withUser } from 'components/hoc/withUser';

const enhance = compose(
  withUser,
  withRouter,
  withStyle(styles)
);

const MyComponent = (props) => {
  // ...
};

export default enhance(MyComponent);

在上面的例子中,我们使用 compose 函数将 withUser, withRouter, withStyle 这三个高阶组件组合成了一个新的 HOC enhance,使用 enhance 函数后,MyComponent 组件就具备了 HOC withUser, withRouter, withStyle 的所有特性。

相关推荐
best6661 分钟前
Vue3什么时候不会触发onMounted生命周期钩子?
前端·vue.js
best6662 分钟前
Javascript有哪些遍历数组的方法?哪些不支持中断?那些不支持异步遍历?
前端·javascript·面试
特级业务专家6 分钟前
Chrome DevTools 高级调试技巧:从入门到真香
前端·javascript·浏览器
爱学习的程序媛9 分钟前
【Web前端】Angular核心知识点梳理
前端·javascript·typescript·angular.js
小时前端12 分钟前
前端架构师视角:如何设计一个“站稳多端”的跨端体系?
前端·javascript·面试
p***h64313 分钟前
JavaScript图像处理开发
开发语言·javascript·图像处理
袅沫14 分钟前
Element-UI 番外表格组件
javascript·vue.js·ui
Hilaku17 分钟前
这 5 个冷门的 HTML 标签,能让你少写 100 行 JS
前端·javascript·html
杰克尼21 分钟前
vue_day06
前端·javascript·vue.js
DcTbnk26 分钟前
ESM (放到打包里 import) 和 IIFE (URL 动态 loadScript)
前端·javascript