Redux之middleware简化版

元气小坏坏 提交于 2020-03-01 06:12:15

只要学过redux的童靴都知道它是flux架构优秀的实现,但是思想略微不同。

个人觉得redux的源码非常值得学习,所有的代码精炼灵活,而我觉得最牛逼的应该算是middleware,但是源码较烧脑,用到了大量的函数式编程,所以我通过对代码的阅读,整理出了一个简化版的demo。

预备的知识应该有: -什么是闭包? -什么是函数式编程? -什么是柯里化?

middleware简化版代码(如有错误,谢谢指正)

function dispatch(action) {
    console.log('dispatch');
    return action;
}

function logger(next) {
    console.log('logger start');
    return function(action) {
        let retValue = next(action);
        console.log('logger end');
        return retValue;
    }

}

function warn(next) {
    console.log('warn start');
    return function(action) {
        let retValue = next(action);
        console.log('warn end');
        return retValue;
    }

}

function compose(...funcs) {
  const last = funcs[funcs.length - 1]
  const rest = funcs.slice(0, -1)
  return (...args) => rest.reduceRight((composed, f) => f(composed), last(...args))
}


var dispatch = compose(warn, logger)(dispatch);
dispatch('loggerDipatch');
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!