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都会触发一次,
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(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,只有在状态发生变化的时候才发生计算过程.