本人是小菜鸡一枚
这次想使用redux再做一遍todo-list,之前做的是用state做的,这次想用一下redux
在使用中遇到了问题,我想获取初始状态来渲染List列表,但是获取到的state是undefined,但是执行了dispatch又获取到了更新后的state,如下图
于是我检查了我的Provider
也没有问题,问题出在哪了呢?看看我的reducer
在 Redux 中,当应用程序初始化时,Redux store 的 state 会被设置为 reducer 函数的默认值,这个默认值是通过调用 reducer 来生成的。也就是说它会自己执行一次reducer函数来获取初始state,即reducer的返回值。在我执行dispatch的时候,reducer的返回值将我的初始state添加到了state中,我的理解是reducer的第一个参数state是上一次reducer执行的返回值,如果上一次没有返回值,则本次的第一个参数state为上一次reducer的state。
所以看出来为什么我在ShowItems组件中获取不到我的初始state了吗?没错,因为我没有设置返回值,所以导致没有初始state,加上return就解决问题啦,如下图
以上就是我碰到的问题了,感谢大家阅读,如果有误,请指正~~