REACT-COMPOSE

969 阅读1分钟

curry

什么是curry?

  • curry就是把多个参数的函数简化为一个参数的函数

curry用途

  • 降低认知函数的难度
//原始代码
    add = (x, y) => x + y;
//curried后代码

    curriedAdd = (x) => {
        return (y) => {
            return x + y;
        }
    }

//  优化后的代码

    curriedAdd = (x) => (y) => {
            return x + y;
        }
//  再优化后的代码

    curriedAdd = (x) => (y) =>  x + y;

再复习下reduce

Array.reduce(funs,x)

  • 归并操作,总共两个参数,第一个是函数,
  • 可以理解为累加器,遍历数组累加回传的返回值,第二个是初始数值。如果没有提供初始值,则将使用数组中的第一个元素。
  • 注意: reduce() 对于空数组是不会执行回调函数的。

compose(HOC,HOC)(component)

官方解释:实现方法的调用串联

普通组件 会传入 compose 参数中最右边高阶组件里面,return 出来之后再传入 依次的高阶组件里面执行(套娃)

    function compose(...funcs) {
    

    if (funcs.length === 0) {
        return function (arg) {
            return arg;
        };
    }

    if (funcs.length === 1) {
        return funcs[0];
    }

    return funcs.reduce((a, b) => {
        return (...args) => {
            return a(b(...args)))
        }
    }
}

优点:

  • 更方便的代码管理
  • 可以复用组件 利于单元测试
  • 拆分逻辑

应用场景

  • 逻辑复杂的高阶函数嵌套,可以拆分高阶函数的功能,使逻辑更加清晰。