Redux流
首先我们有一个组件,这个组件要修改store中的数据,他就从 Action Creater 中拿到一个action;组件将这个action使用 store.dispath(action) 发送给store。store接收到这个action, Stroe 就拿着这个action和当前的state去问Reducer;Reducer接受到当前的state和action后将新的state返回给Store;Store就用这个新的state更新自己,然后告诉组件要重新展示什么数据。
Redux中核心API
createStore //创建一个store
store.dispath(action) //派发一个action,这个action会传递给store
store.getState() //获取store里面的所有内容
store.subscribe(callback) //订阅store的改变,只要store发生改变,它接受的这个回调函数就会执行
Redux的三个基本原则
1. store是唯一的
2. 只有store才能改变自己的内容
可能新手认为是reducer在改变store的内容,但不是这样的。
reducer拿到一个action,然后创建一个新的state返回给store,然后store再用这个state更新自己。所以store的数据不是reducer更新的,而是store拿到reducer的数据自己对自己更新的。
3. reducer必须是纯函数
纯函数的定义是:给固定的一个输入,就会返回一个固定的输出,而且不会有副作用。
使用Action Creators 统一管理action
在组件那边太多的action会让页面变得复杂、难以管理。所以我们将所有的action都放在actionCreators.js文件中,会让逻辑更清晰
使用actionType来管理action的命名
redux的action事件是用字符串命名的,当我们把aciton的变量名拼写错误的时候就会出现点了但没反应的情况,但是控制台里得不到任何的报错信息。如果我们使用一个常量来定义action名的话一旦出现拼写错误就会报错,这样就可以避免因为action名写错而得不到报错信息的情况。