牡丹江建设工程信息网站,有限公司注册资金,wordpress主题放在那个文件夹,王烨玺注意#xff1a;本文不会把所有知识点都写一遍#xff0c;并不适合纯新手阅读 首先Redux是一种状态管理方案#xff0c;本身和react并没有什么联系#xff0c;redux也可以结合其他框架来用。 react-redux是基于react的一种状态管理实现#xff0c;他不像vuex那样直接内置在… 注意本文不会把所有知识点都写一遍并不适合纯新手阅读 首先Redux是一种状态管理方案本身和react并没有什么联系redux也可以结合其他框架来用。 react-redux是基于react的一种状态管理实现他不像vuex那样直接内置在create-react-app里需要自己去安装。 react-redux有三个重要概念分别是storeactionreducer。 1.store。store就是存储全局数据状态的仓库。像这样 const initState {xxx1: null,xxx2: null,
};需要注意的是state是只读的意味着我们不能initState.xxx1 233这样去修改store里的数据。 其实工作的项目里仓库并不是放在store.js里store.js里一般是做一些创建store注册saga的操作state一般是放在具体模块的reducer.js里一个模块应该有action.jsreducer.jssaga.js三个文件 2.action。 上文说了state是只读的所以我们只能通过派发action的方式修改store里的数据。 派发action这个说法我一直觉得很拗口其实就是dispatch action的直译。 action包含两部分type和payload。 type其实就是action的标识一个常量的字符串用来说明这个action是干嘛的比如说type:GET_USERNAME说明这个action是用来获取username的payload就是参数了就是调用api需要的参数。 注意action是派发给store的。 3.reducer。 reducer接收一个state和action返回一个state。 store在接收到action之后会把action和当前的state传给reducer然后reducer根据action的type去判断执行什么样的操作然后返回一个新的state给store比如return {...state,name:接口获取到的username}。 工作流程图如下 react-redux.png 这个流程还是蛮好懂的接下来我们来说下reducer要注意的地方。这里牵扯到我们为什么还要用redux-saga reducer必须是一个纯函数 纯函数是指一个函数的返回结果只依赖于该函数传入的参数而不能产生副作用 副作用是指异步操作DOM操作等... 好的没明白是吧说人话reducer里是不能进行异步请求的我们在工作中肯定会调用接口异步获取数据的这样的话只靠react-redux是无法满足我们的需求的而redux-saga就是来解决这个问题的。 如果你熟悉vuex就知道vuex里有mutation和action其中mutation提交更新数据的方法只能是同步的而action中就可以包含异步操作了而且action提交的是mutation。 mutation和action的关系就近似于reducer和saga的关系saga里调用接口获取到数据之后再提交action给reducer最终返回新的state给store的还是reducer。 saga包含watch-saga函数和worker-saga函数watch-saga用于监听系统派发出来的actionwatch-saga一旦监听到了某个action就执行对应的worker-sagaworker-saga里进行异步操作调用接口请求数据等拿到数据之后派发第二个action给storestore再把state和action给reducer至此就和无saga时的流程一样了。 加入了saga工作流程发生了变化 我们注意到工作流中的action有两个可以理解为第一个action是给watch-saga的第二个action时异步操作完之后worker-saga给store的。 加入saga后的工作流程如下 redux-saga.png © 著作权归作者所有,转载或内容合作请联系作者 喜欢的朋友记得点赞、收藏、关注哦