React,关于redux的一点小看法

  最近项目作多页面应用使用到了,react + webpack + redux + antd去构建多页面的应用.因此在这里吐槽一下我本身对于redux的一些看法。react

  Redux是状态管理的它也是单向数据流。虽然它自己受到Flux的影响很大,可是它的核心概念缺很简单,就是Redue也就是ES5中Array.prototype.reduce,这个reduce用于合并数组的元素,它是基于一个React的component的接口,getChildContext接口实现的。下面是ReactClass的接口:webpack

var ReactClassInterface = { mixins: SpecPolicy.DEFINE_MANY, statics: SpecPolicy.DEFINE_MANY, propTypes: SpecPolicy.DEFINE_MANY, contextTypes: SpecPolicy.DEFINE_MANY, childContextTypes: SpecPolicy.DEFINE_MANY, // ==== Definition methods ==== getDefaultProps: SpecPolicy.DEFINE_MANY_MERGED, getInitialState: SpecPolicy.DEFINE_MANY_MERGED, getChildContext: SpecPolicy.DEFINE_MANY_MERGED, render: SpecPolicy.DEFINE_ONCE, // ==== Delegate methods ==== componentWillMount: SpecPolicy.DEFINE_MANY, componentDidMount: SpecPolicy.DEFINE_MANY, componentWillReceiveProps: SpecPolicy.DEFINE_MANY, shouldComponentUpdate: SpecPolicy.DEFINE_ONCE, componentWillUpdate: SpecPolicy.DEFINE_MANY, componentDidUpdate: SpecPolicy.DEFINE_MANY, componentWillUnmount: SpecPolicy.DEFINE_MANY, // ==== Advanced methods ==== updateComponent: SpecPolicy.OVERRIDE_BASE, };

   Redux认为,一个应用程序中,全部的应用模块之间须要共享访问的数据,都应该在Store的State里面。这点和React的state和props的概念是一致的。外面的props尽可能不去改变,而改变的只是内部的状态state,而有shouldComponentUpdate这个生命周期函数,咱们能够优化reactweb

  可是有一个原则是没有改变的,就是在你不知道你是否须要redux的时候,你确定是不须要它。就像Flux的做者说的那样,Flux就像眼镜,你会知道你在何时须要它。redux

  下面介绍一些本人对于redux的一些使用经验:最好保证State的没个节点都是immutable的,这样确保在消费State的时候只须要进行简单的引用就能够了。从而避免Deep Equal 的遍历过程。也就是说你的state最好是键值的对象形式,避免数组形式的非state最底层值的形式。reducer为纯函数,若是判断太多,可使用combineReducers(),去组合reducer,分离reducer合理管理你的state.并不须要全部的数据都在State里面,虽然这也是能够,总之一句话,合适你的才是最好的,适用须要的代码才是最好的。建议因此的asyncAction都应该被管理。这很大程度上,能够提升用户体验。建议适用Promise async/await 去实现异步的管理。在redux中有不少的中间件,能够加快开发效率。数组

  总结:说白了就是你能够把redux看成是mvc中的model,controller层,react它就是mvc中view层antd

相关文章
相关标签/搜索