Redux 是 JavaScript 状态容器,提供可预测化的状态管理。
初学这个,觉得网上有些文章并不那么容易看懂,这里用浅白的话简单介绍一下Redux在react-native的使用。
说白了就三个主要东西,Action,Store以及Reducer。
Reducer:在触发上面的Action后,对Action进行处理,并返回一个新的state。
Store:每个程序有且只有一个Store,作为一个根节点管理state,很多个state等于子节点。Action和Reduce就是通过Store才能联系到一起。
直接来个事例,顺便对比一下用传统的setState方法和使用Redux来控制state的区别
先来搭配一下Redux环境
npm install --save redux 【redux的包】
npm install --save react-redux 【react-redux是redux需要依赖的包】
npm install --save redux-thunk 【redux-thunk是用来让redux有异步的action事务】
先看工程的目录结构,有三个文件夹,就是上述三个东西。。。。。
Store留在最后才说,因为这是其他两个连接的对象。
这三个东西的流程是这样的,
1.Store不用多说,都是拷贝一份代码完事。然后把store的绑在根页面的属性内。
2.Reducer,先建一个索引的文件作为绑定Reducer的(也是拷贝的功夫),然后就可以写多个Reducer了。Reducer是通过Action分发过来的action,找到合适类型的Reducer,Reducer的逻辑代码就会生成新的一个state,最后return给Store。
3.Action,给页面触发用的,当页面绑定好connect,就可以通过props获取【dispatch分发器】和【Store管理的state】,dispatch分发器在页面使用:(1)事件会传到Action。(2)Action里再用dispatch分发到Reducer。(3)Reducer已经绑定了Store,只要return一个state给Store,Store就会把新的state替换旧的。
4.从以上三步可以看出,这三个东西的运作流程,但会有点模糊,我看很多贴的时候都会有这个疑问,我现在很熟悉redux的原理了,我到底怎么统一管理state呢?回顾一下这里第1点,Store是要绑在根页面的,因此我们可以获得Store管理的state。再回顾一下第2点,Reducer需要一个索引绑定多个Reducer的,因此每个Reducer返回的新的state是都得经过绑定这个索引的。最后回顾第3点,页面获得Store管理的state。综合以上分析,根据Reduc