回来的架构怎么在ReactNative中使用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
<强>为什么要使用回来的吗?强>
背景:
- <李>
RN的状态(可变,子组件不可见)和道具(不可变,子组件可见)的设计,在面对大型项目时候,容易因为不经意修改国家造成状态混乱,组件渲染错误
李> <李>RN使用了虚拟DOM,不需要目标绑定→行动修改UI属性,只要当状态变化,呈现新状态下的组件,数据单向传递,而MVC的设计模式存在双向数据流。
李> <李>RN不易进行测试,回来的提供了非常方便的模拟测试方式。
李><强>回来的开发强>
开发环境
- <李>
安装回来的:“npm安装保存回来的# 39;
李> <李>安装本机和反应回来的绑定库:npm安装保存react-redux
李> <李>安装回来的铛异步行动中间件:npm安装保存redux-thunk
李><强>三个原则强>
<强>单一数据源强>
整个应用的状态被储存在一个对象树中,对象树存在于唯一的商店中.store中绑的状态定到组件
状态是只读的
惟一改变状态的方法就是触发action.action是一个含有类型属性的普通JS对象,类型可以用常量表示事件。
使用纯函数来执行修改
编写还原剂来描述对应的行动如何修改状态。一般可以用开关(action.type)来处理,无副作用
<强>使用强>
react-redux提供了连接和提供者。
1.提供者是顶层的分发点,属性就是商店,将状态分发给所有被连接的组件
2。连接:接受两个参数:一个是mapStateToProps或者mapDispatchToProps,一个是要绑定的组件本身。
<强>存储强>
商店就是把减速器和行动联系到一起的对象.Store有以下职责:
- <李>
维持应用的状态——类似数据库,存储应用的所有状态。
李> <李>提供getState()方法。获取所有的当前状态;
李> <李>提供调度(行动)方法更新状态,相当于存入数据库,存入行动来改变状态。
李> <李>通过订阅(听众)注册监听器。
李>存储本质上是一个对象,它以树的形式保存了整个应用的状态。并提供了一些方法,例如getState()和调度()。
回来的应用只有惟一一个商店。
存储通过createStore方法来创建,根据整个应用的根减速器的初始状态。
代码如下:
import {createStore的不同之处是,applyMiddleware },得到& # 39;回来的# 39;; import thunk 得到& # 39;redux-thunk& # 39;;//异步 import reducers 得到& # 39;。/还原剂# 39;; const Store =, applyMiddleware(铛)(createStore)(还原剂); export default 存储;
<>强还原剂强>
操作只是描述了有事情发生了这一事实,并没有指明应用如何更新状态。这是减速器要做的事情。
减速器的本质是一个函数,并且是一个纯函数。没有任何副作用。简单来讲减速器只负责做一件事,就是根据接收到的动作和状态来修改中存储的状态:
(状态、动作)=比;newState
一般实现的时候,通过开关(action.type)来判断不同的行动,默认为旧状态。同时可以定义初始状态。
代码:
import {, combineReducers },得到& # 39;回来的# 39;; const newState =, (state =, {},, action =,{}),=祝辞,{ ,switch (action.type), { case 才能;ActionTypes.CSTATE: ,,return {,……,……action.state }; case 才能;& # 39;_DPDATACHANGE_& # 39;: ,,return {…,,…action.dpState}; 默认值:才能 ,,return 状态; ,} };//Reducer 合并 export default  combineReducers ({ ,newState。 });
注意:返回的是新状态,如果需要保留部分旧状态值,使用…状态(ES7的对象展开语法,对对象会浅拷贝对应属性,这里等价于对象。分配({}、州newState)),而如果合并状态的话只会合并一层,对复杂的状态需要手动合并。
<强>操作强>
操作是一个普通JS对象,至少包括一个类型属性代表事件,其他属性可以用来传递数据。实践上对一个流程定义一个函数,流程可以包括网络请求,最后返回行动,这个函数叫行动创造者。