1.相关概念
action
store.dispatch({ type: 'INCREMENT' , value: 6 }); // 相当于action
reducer
reducer是一个纯函数,即确定的输入和确定的输出。也没有副作用,比如说不请求其他的东西
state
可以是任意的数据类型
关于state,需要注意下面一点
现在把state改成一个引用类型如下所示
当我们在页面中点击两次,控制台出现
好像很正确,但是reducer是一个纯函数,不应该在reducer中修改state内部的值,现在我们看看现在的state和之前的state的对比,添加这样的代码
然后点击两次,查看控制台
可以看到老的state和新的state是一模一样的。
现在我们继续修改
点击两次
这样之前的state和新的state是不一样的。这样就没有问题了。
上面的过程可以参考下面这张图。
总结一下,reducer不能直接修改state的值,但是可以返回一个新的state