只要学过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');
来源:oschina
链接:https://my.oschina.net/u/269836/blog/709733