redux使用過程中遇到的兩個致命的關鍵點


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM