本文介绍了ReactNative中使用Redux架构总结,分享给大家。具体如下:
使用Redux也有一段时间了。总结一下。
为什么要使用Redux"htmlcode">
Reducers Action只是描述了有事情发生了这一事实,并没有指明应用如何更新state。这是reducer要做的事情。 Reducer的本质是一个函数,并且是一个纯函数。没有任何副作用。简单来讲Reducer只负责做一件事,就是根据接收到的action和state来修改Store中的state: (state, action) => newState 一般实现的时候,通过switch(action.type) 来判断不同的Action,default为旧state。同时可以定义初始状态。 代码: 注意:返回的是新state,如果需要保留部分旧state值,使用…state(ES7的对象展开语法,对对象会浅拷贝对应属性,这里等价于Object.assign({}, state, newState)),而如果合并state的话只会合并一层,对复杂state需要手动合并。 Action Action是一个普通JS对象,至少包括一个type属性代表事件,其他属性可以用来传递数据。实践上对一个流程定义一个函数,流程可以包括网络请求,最后返回Action,这个函数叫Action Creator。 代码:Store可以dispatch这个Action,action的type表示标识符,state是它携带的数据。 持久化 当触发action时根据其reducer key恢复数据,然后只需要在应用启动时分发action,这也很容易抽象成可配置的拓展服务,实际上三方库redux-persist已经为我们做好了这一切。 在Action中可以代码如下: connect 通过- 提供 getState() 方法。获取 所有的当前state 通过connect,绑定需要的state以及Action Creator到你的组件的props上,这样组件就可以通过props来调用Action Creator,或者根据不同props来render()不同的组件。 代码: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';//异步
import reducers from './reducers';
const Store = applyMiddleware(thunk)(createStore)(reducers);
export default Store;
import { combineReducers } from 'redux';
const newState = (state = {}, action = {}) => {
switch (action.type) {
case ActionTypes.CSTATE:
return { ...state, ...action.state };
case '_DPDATACHANGE_':
return {...state, ...action.dpState};
default:
return state;
}
};
//Reducer 合并
export default combineReducers({
newState,
});
export const newState = state => {
Store.dispatch({
type: ActionTypes.CSTATE,
state,
});
};
export const getStorage = async (key) => {
const d = await AsyncStorage.getItem(key);
return JSON.parse(d);
};
export const setStorage = (key, value) => {
AsyncStorage.setItem(key, JSON.stringify(value));
};
mapStateToProps({ newState }) {
const value = newState[name];//name: newState.name
return {
name,
};
},
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
更新日志
- 群星2013-青春缤纷辑压箱宝大公开3CD2[新加坡限量版][WAV整轨]
- 林育群.2013-BalladShow(日本版)【环球】【WAV+CUE】
- 陈加洛.1992-痛到感觉不到【宝丽金】【WAV+CUE】
- 群星.2023-宿命之敌电视剧原声带【韶愔音乐】【FLAC分轨】
- 東京事変-大発見[FLAC+CUE]
- 椎名林檎-三文ゴシップ[FLAC+CUE]
- 2024年08月04日
- 裘德《裘德「最后的水族馆」演唱会LIVE》[320K/MP3][228.89MB]
- 裘德《裘德「最后的水族馆」演唱会LIVE》[24bit 48kHz][FLAC/分轨][2.08G]
- 基因三重奏《如果你什么都不说 音乐会现场录音》[320K/MP3][145.37MB]
- 孟庭苇.1996-月亮说话(2020环球24KGOLD限量版)【上华】【WAV+CUE】
- 群星.1997-新艺宝优质音响系列·国语精选监听版【新艺宝】【WAV+CUE】
- 阿桑.2005-寂寞在唱歌(星外星引进版)【华研国际】【WAV+CUE】
- 基因三重奏《如果你什么都不说 音乐会现场录音》[FLAC/分轨][287.43MB]
- 蔡题谦《我爱你,却依然要看你走》[320K/MP3][88.65MB]