码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-10-24 14:06:04      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:span   cti   更新   back   cas   过程   object   比较   没有   

一、在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使用过程中遇到的两个致命的关键点

标签:span   cti   更新   back   cas   过程   object   比较   没有   

原文地址:http://www.cnblogs.com/boomyao/p/5992476.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!