最近我遇到了一个情况在我的应用程序中,我搜索了解决方案,但没有找到合适的答案,如你所知,我们的应用程序中有600多个模块。当用户导航到新页面时,浏览器可能会充满新状态及其数据。因此,我们计划在进入新模块时清除所有其他功能状态。并且仅在整个应用程序中保持根状态有效。我想知道我的方法是否正确?如果可以的话,最好的方法是什么?
答案 0 :(得分:1)
我不明白为什么拥有一个庞大的国家根本不是问题。
如果您要写很多东西,这将是一个问题,因为它是不可变的,因此您需要更新链中更高的所有引用。但是,如果仅当您使用其他模块时才触摸状态的另一部分,那么在更新商店时,您未修改的部分将被重用(通过引用),这确实很便宜。
另一方面,您可以做的是从离开当前模块的效果观察,并触发当前reducer的清理(重置为默认状态?)。
关于所有选择器,如果您使用createSelector
,则使用的是备注,并且由于商店的“未使用”部分的引用不会更改,因此它将直接返回先前的值。
您为什么需要清理自己的状态?我很好奇。如果是因为性能问题,我会说这可能与它完全无关。