1.Redux设计和使用的三大原则
Store是Redux中非常重要的一个概念,它是保存整个应用程序状态的容器。Redux要求应用程序中只能有一个Store,这个Store是在index文件中全局定义的,通常是通过Redux提供的createStore函数创建的。
全局只有一个Store的index文件。
在Redux中,只有Store可以改变自己的内容,而Reducers则负责生成新的数据,给Store,让它更新自己的数据。Reducers是一个纯函数,它的功能是将当前状态和一个action作为输入,然后返回一个新的状态。纯函数的特点是,给定相同的输入,总是返回相同的输出。因此,Reducers不能修改传入的state,而是要返回一个全新的state。如果Reducers试图直接改变state的值,那么Redux就会抛出一个错误。
这也是为什么Reducers里面不要写这种state.value = xxxx ,这个其实就是Reducers尝试改变数据,是不被允许的。
此外:Redux要求Reducers必须是一个纯函数,因为这样能够确保状态的可预测性和可维护性。如果Reducers具有副作用,那么它就会改变Redux中的状态,这会导致状态不再可预测,使调试和维护变得更加困难。因此,在Reducers中应该避免副作用,例如修改传入的state、发起网络请求或读取本地存储等。
需要注意的是,纯函数并不是说Reducers不能涉及到动态数据和随机数,而是说Reducers在接收到相同的输入时应该返回相同的输出。例如,如果在Reducers中使用了动态数据,那么这些数据应该作为参数传递进来,而不是在Reducers内部生成。同样地,如果在Reducers中使用了随机数,那么应该使用纯函数库来确保它们在相同的输入下生成相同的结果。
简单来说当你的State确定,Action也确定,返回的newState必须是固定的。
如果涉及到一些动态数据和随机数就不是了,例如下面这种:
还包括ajax请求等等。
副作用指的是:
对接收参数进行了修改,这个就是副作用!!!