据我所知,当 store 中的任何内容发生变化时,redux 将通知 store 的所有订阅者,无论是对深度嵌套的叶子的订阅还是对状态顶层的订阅。
在遵循指导原则的应用程序中:
许多单独的组件应该连接到商店,而不是只有几个...... [文档]
您最终可能会遇到很多听众和潜在的性能问题?
免责声明:我了解,如果选择器功能的结果发生变化,选择器功能只会导致重新渲染。我知道仅仅因为评估了侦听器函数,并不意味着订阅组件将重新呈现。我知道评估选择器功能对于反应组件渲染来说相对便宜。
但是,我只想确认这确实是 redux 的工作原理?
例如,给出以下示例监听器
const result = useSelector(state => state.a.b.c.d.e.f.g.h.i.j.k)
如果我们沿其他路径更新其他值,与上述侦听器无关,例如
const exampleReducer = (state) => {
return { ...state, asdf: 'asdf' }
}
据我了解,将调用所有侦听器,包括上面的示例。
对于上下文,我的实际用例是我使用的是基于 redux 的https://easy-peasy.now.sh/ 。需要明确的是,我目前在生产中没有任何与绑定太多侦听器相关的性能问题。但是,每次我通过useStoreState钩子附加一个侦听器时,我都想知道是否应该最小化将另一个侦听器绑定到商店。
另外,如果你很好奇,受这种想法的启发,我实现了一个状态树,它只通知相关的 listeners。
也许这对于状态库来说是一个过早的优化......但如果是这样,为什么?是否假设使用 redux 的应用程序将具有简单快速的选择器,并且应用程序瓶颈将在其他地方?