场景
在reducer中使用 object.assign(state,{data:xxx}) 合并了状态,控制台打印state 数据已更新,但是页面未重新渲染
原因
redux会通过引用来判断前后两次state有没有变化。return原来的state的话redux会认为你的state没有变化。
咱们用Object.assign(state,xx)是直接修改了state对象,然后返回的还是原来的state对象(被修改过的数据)但是引用未更改,还是同一引用源。
解决
使用而扩展符则是创建了一个新的对象,相当于Object.assign({},state,...)
注意:不要在reducer里面做以下操作
1、修改传入参数;
2、执行有副作用的操作,如 API 请求和路由跳转;
3、调用非纯函数,如 Date.now() 或 Math.random()。