处于Redux状态的函数

处于Redux状态的函数,redux,Redux,在react redux应用程序开发过程中,我遇到了一个特殊的用例: 我们的应用程序将一些函数作为资源(我们动态加载它们,然后将它们作为工厂来创建实例)。目前我把它们放在商店状态,效果很好。然而,将函数置于Redux状态似乎是一种反模式,这将破坏存储内容的持久化和再水化能力 因此,我尝试将函数从存储状态移出:我使用映射来保存函数,并将相应的键存储在状态中。问题是,通过这样做,我的状态到ui转换不再保留纯函数。在动态加载函数时,函数映射的内容会发生变化。在不同的时间段(例如,加载函数与加载函数),

在react redux应用程序开发过程中,我遇到了一个特殊的用例:

我们的应用程序将一些函数作为资源(我们动态加载它们,然后将它们作为工厂来创建实例)。目前我把它们放在商店状态,效果很好。然而,将函数置于Redux状态似乎是一种反模式,这将破坏存储内容的持久化和再水化能力

因此,我尝试将函数从存储状态移出:我使用映射来保存函数,并将相应的键存储在状态中。问题是,通过这样做,我的状态到ui转换不再保留纯函数。在动态加载函数时,函数映射的内容会发生变化。在不同的时间段(例如,加载函数与加载函数),相同的存储状态将导致不同的UI


现在我觉得把函数放在redux系统之外的某个地方是不正确的。我需要一些关于如何放置这些函数的建议。

正是由于您提到的原因,将函数存储在Redux状态可能不是一个好主意。 您可以在Redux状态下存储函数的加载状态。比如:

{
    'loadedFunctions': ['func1', 'func2']
}
或者更复杂的事情:

{
    'functionsStatus': {
        'func1': {
            loaded: false,
            loading: true
        }
    }
}

在这种情况下,相同的Redux状态应该会产生相同的UI(若函数体不变)

谢谢您的回复!因此,我应该将函数存储在其他位置,并按键组织它们,如
func1
func2
?这意味着,当我想在组件中使用它们时,我必须从state获取key(例如
func1
),并从“其他地方”找到真正的函数。然后从state检查此函数是否已加载,如果未加载,则显示加载程序或您想要的内容。在这种情况下,您将获得redux状态和呈现ui之间更纯粹的关系。但请记住,实际应用程序可能比todo列表更复杂,并且在任何地方保持纯洁性都不是最佳决策