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

相关文章:

  • 2021-04-28
  • 2021-10-25
  • 2021-09-27
  • 2022-12-23
  • 2021-09-13
  • 2022-12-23
  • 2021-11-23
猜你喜欢
  • 2021-06-23
  • 2021-08-25
  • 2022-01-13
  • 2022-12-23
  • 2021-04-28
  • 2021-04-11
  • 2021-09-24
相关资源
相似解决方案