reactjs在使用redux的时候,子组件触发action,父组件也会更新?

例如 在A组件下面有一个B组件,当我在B组件 dispatch一个action的时候,state发生改变,结果A组件更新,然后B组件更新。这样正常么?能不能只更新B组件,而父组件不更新?

第二A组件 对应reduer 是A.js C组件对应C.js,A C 同级,但是 当在 B组件dispatch action的时候A C里面的reducer都会触发一次,

阅读 6.7k
4 个回答

一般不建议使用redux,除非你的工程很大很大,
正常情况,订阅,发送的模式足以满足不存在层级关系的组件间的相互沟通

1.可以只更新B组件,将B组件需要的 state 和B组件 connect,触发 action 后就只会触发对应绑定的B组件;如果A和B组件有相同 state 而只想更新B,要么对A和B都 connect,然后再对A组件添加 shouldComponentUpdate 进行判断,要么还是 connect A组件,只要组件嵌套不会太多,性能不会影响很多。

2.action调用后,按照 redux 的思想,state 必须是全新的,所以 store 必须调用每一个 reducer 来获取新的state值来组成新的 state 对象,所以这很正常;而且,action 相关的数据也需要发送给每一个reducer,以此保证所有相关数据的正常更新。

所有被connect的组件都会更新,所以有重复更新渲染的问题,不过应该没有什么问题的,redux就这样的,dispatch action的时候,所有的reducers都会执行。而父组件不更新,使用setState?使用mobx?

可以使用reselect,只有在状态发生变化的时候才发生计算过程.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题