使用了redux和react-reduxreducer的部分代码如下//给初始状态一个默认值:{money:0}exportfunctionreducer(state={money:0},action){switch(action.type){caseADD://使用Object.assign,在调试的过程发现state确实改变了,但是页面没有变化,而使用扩展运算符则可以。//returnObject.assign(state,{money:(state.money+1)});return{...state,...{money:state.money+1}};caseSUBTRACTION:return{...state,...{money:state.money-1}};default:returnstate;}}请问有大牛知道原因吗
2 回答
慕虎7371278
TA贡献1802条经验 获得超4个赞
楼上说的对。你用Object.assign(state,...)是直接修改了state对象,然后返回的还是原来的state对象(被修改过的),而redux会通过引用来判断前后两次state有没有变化。return原来的state的话redux会认为你的state没有变化。而扩展符则是创建了一个新的对象,相当于Object.assign({},state,...)希望对你有帮助
添加回答
举报
0/150
提交
取消