redux 所有监听都会触发一遍吗?为什么?
在 Redux 中,每当你 dispatch 一个 action 时,所有的订阅者(通过 store.subscribe
注册的回调函数)都会被触发。这是因为 Redux 的设计理念是让所有的订阅者在 state 发生变化时都能及时得到通知,从而可以根据新的 state 做出相应的更新。
具体来说,Redux 的工作流程如下:
store.subscribe
注册的回调函数,并依次调用它们。这种设计有几个好处:
然而,这也意味着如果有很多订阅者,每次 state 变化时都会触发所有的订阅者,可能会带来性能上的问题。为了解决这个问题,可���采取以下几种优化策略:
reselect
: 通过 reselect
库创建 memoized selector,避免不必要的计算。总的来说,Redux 的设计是为了保证所有订阅者在 state 变化时都能及时得到通知,但也提供了多种优化手段来应对性能问题。