一、在reducer中,返回的state必须是全新的对象,否则,redux不会执行listening方法,因为redux会认为state没有更新过,没必要重新渲染view。
出现问题的例子:
const user=(state={name=‘‘,age=0},action)=>{ switch(action.type){ case ‘CHANGE_NAME‘: state.name=‘zhangsan‘;//在原object中修改name return state; default: return state; } }
是的,就是这个例子,就算旧state的name值修改了,但是redux不会认为state作出改变的,我没有去看源代码(菜鸟,要研究比较久),但猜测是,redux给每个state附加key值了,所以,是通过判断key来决定要不要重新渲染view的。
二、redux的combineReducers方法,假设有reducer1(signUp)和reducer2(signIn),两个reducer都有action type(‘CHANGE_USERNAME‘),你会发现在其中一个view中修改username,另外一个username也会跟着改变,
也就是说,就算在不同的reducer里,最好也不要有相同的action type,否则会有脏数据产生。
时间: 2024-10-05 12:13:46