首页 > 代码库 > redux使用过程中遇到的两个致命的关键点

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,否则会有脏数据产生。

redux使用过程中遇到的两个致命的关键点