一、在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,否則會有臟數據產生。