例如 在A组件下面有一个B组件,当我在B组件 dispatch一个action的时候,state发生改变,结果A组件更新,然后B组件更新。这样正常么?能不能只更新B组件,而父组件不更新?
第二A组件 对应reduer 是A.js C组件对应C.js,A C 同级,但是 当在 B组件dispatch action的时候A C里面的reducer都会触发一次,
例如 在A组件下面有一个B组件,当我在B组件 dispatch一个action的时候,state发生改变,结果A组件更新,然后B组件更新。这样正常么?能不能只更新B组件,而父组件不更新?
第二A组件 对应reduer 是A.js C组件对应C.js,A C 同级,但是 当在 B组件dispatch action的时候A C里面的reducer都会触发一次,
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?
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
一般不建议使用redux,除非你的工程很大很大,
正常情况,订阅,发送的模式足以满足不存在层级关系的组件间的相互沟通