全局状态管理工具。
1.通过createStore方创建一个状态仓库。
2.创建一个reducer函数传入createStore,这也是我们处理业务逻辑的地方。
3.createStore调用reducer时会自动传入两个参数 (state = {自定义的状态}, action),然后把state返回出去。
4.在组件中引入我们刚刚创建的store,使用store.getState()可以获取到在reducer中返回的值。
- 如需改变状态,则可以通过调用store.dispatch (action)交给reducer处理。reducer接收到action后,则可以依据不同的action.type处理不同的状态。
6.最终,在组件的构造方法中就可以使用this.state = store.getState(),如若组件不更新,可以使用store.subscribe(this.setState({store.getState()})来达到更新的效果
注:
redux中,store只能创建一个。
reducer中传入的state是只读的,不能进行修改,需进行深拷贝到另一个变量后返回给store才能改变状态。
createStore()接收的是一个纯函数,意味着我们不能把异步请求的结果写在reducer里面。
纯函数:
1.如果函数的调用参数相同,则永远返回相同的结果。它不依赖于程序执行期间函数外部任何状态或数据的变化,必须只依赖于其输入参数。
2.该函数不会产生任何可观察的副作用,例如网络请求,输入和输出设备或数据突变。