redux使用过程中遇到的两个致命的关键点
Posted boomyao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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使用过程中遇到的两个致命的关键点的主要内容,如果未能解决你的问题,请参考以下文章