在react-redux应用程序开发期间,我遇到了一个特殊用例:
我们的应用程序将一些函数作为资源(我们动态加载它们,然后将它们用作工厂来创建实例)。目前我把它们放在商店状态,效果很好。但是,将函数置于Redux状态似乎是一种反模式,这将破坏持久化和重新水化商店内容的能力。
所以我尝试将函数从存储状态移出:我使用映射来保存函数并将相应的密钥存储在状态中。问题是,通过这样做,我的状态到ui变换不再保留纯粹的功能。由于动态加载函数,函数映射的内容会发生变化。在不同的时期(例如加载VS函数的函数),相同的商店状态将导致不同的UI。
现在我觉得将函数放在redux系统的某个地方是不正确的。我需要一些关于将这些功能放在哪里的建议。
答案 0 :(得分:0)
由于您提到的原因,将函数存储在Redux状态可能不是一个好主意。 您可以在Redux状态下存储您的功能的加载状态。类似的东西:
{
'loadedFunctions': ['func1', 'func2']
}
或更复杂的东西:
{
'functionsStatus': {
'func1': {
loaded: false,
loading: true
}
}
}
在这种情况下,相同的Redux状态应该会产生相同的UI(如果你的函数的主体没有改变)