ReactNative中使用Redux架构总结

本文介绍了ReactNative中使用Redux架构总结,分享给大家。具体如下:

使用Redux也有一段时间了。总结一下。

为什么要使用Redux?

背景:

  1. RN的state(可变,子组件不可见)和props(不可变,子组件可见)的设计,在面对大型项目时候,容易因为不经意修改state造成状态混乱,组件渲染错误
  2. RN使用了Virtual DOM,不需要Target绑定->Action修改UI属性,只要当状态变化,render新状态下的组件,数据单向传递,而MVC的设计模式存在双向数据流。
  3. RN不易进行测试,Redux提供了非常方便的mock测试方式。

Redux开发

开发环境

  1. 安装Redux: ‘npm install –save redux'
  2. 安装React Native和Redux绑定库:npm install –save react-redux
  3. 安装Redux Thunk异步Action中间件:npm install –save redux-thunk

三个原则

单一数据源

整个应用的 state 被储存在一个对象树中,对象树存在于唯一的 store 中。store中的 state 绑定到组件

State 是只读的

惟一改变 state 的方法就是触发 action。action 是一个含有 type 属性的普通JS对象,type 可以用常量表示事件。

使用纯函数来执行修改

编写 reducers 来描述对应action如何修改 state 。一般可以用 switch(action.type) 来处理,无副作用

使用

react-redux提供了connect和Provider。

1.Provider是顶层的分发点,属性就是Store,将State分发给所有被connect的组件

2.connect:接受两个参数:一个是mapStateToProps或者mapDispatchToProps,一个是要绑定的组件本身。

Store

Store 就是把 Reducer 和 action 联系到一起的对象。Store 有以下职责:

  1. 维持应用的 state–类似数据库,存储应用的所有state。
  2. 提供 getState() 方法。获取 所有的当前state;
  3. 提供 dispatch(action) 方法更新 state,相当于存入数据库,存入action来改变state。
  4. 通过 subscribe(listener) 注册监听器。

Store本质上是一个对象,它以树的形式保存了整个应用的State。并提供了一些方法。例如getState( ) 和 dispatch( )。

Redux应用只有惟一一个Store。

Store通过createStore方法来创建,根据整个应用的根Reducer的初始State。

代码如下:

import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';//异步
import reducers from './reducers';
const Store = applyMiddleware(thunk)(createStore)(reducers);
export default Store;

Reducers

Action只是描述了有事情发生了这一事实,并没有指明应用如何更新state。这是reducer要做的事情。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/450.html