Javascript 当Redux reducer以默认状态访问外部文件时,使其成为纯Redux reducer

Javascript 当Redux reducer以默认状态访问外部文件时,使其成为纯Redux reducer,javascript,redux,Javascript,Redux,我正在创建Redux reducer来修改我的应用程序的配置。我在一个外部文件中有配置默认值,我想使用它们作为默认状态。因为我正在访问一个外部文件的内容,它可能会改变,这会使我的减速机变得不纯吗?如果是这样的话,我怎样才能把它写得更纯呢 减速器: import configDefaults from './configDefaults'; export default const configOptions = (state = configDefaults, action) => {

我正在创建Redux reducer来修改我的应用程序的配置。我在一个外部文件中有配置默认值,我想使用它们作为默认状态。因为我正在访问一个外部文件的内容,它可能会改变,这会使我的减速机变得不纯吗?如果是这样的话,我怎样才能把它写得更纯呢

减速器:

import configDefaults from './configDefaults';
export default const configOptions = (state = configDefaults, action) => {
    switch (action.type) {
    case 'SET_GLOBAL_CONFIG_PARAMETER':
        return {...state, [action.parameter]: action.value};
    default:
        return state;
    }
};
配置文件:

export default configDefaults = {
    fontSize: 12,
    backgroundColour: 'white'
};
因为我正在访问外部文件的内容,这些内容可能会改变,这是否会使我的减速机变得不纯

不,它只是默认值,当
状态==undefined

您还可以在创建存储时传递默认状态:

createStore(appStore,{appConfigs:configDefaults})

纯功能,是一种没有副作用的功能。


initialState在每个版本的应用程序中都可能有所不同,就像reducer本身一样,但它仍然是纯的。

我想相信你(因为这会让我的生活更轻松),但只是为了强调这一点。。。。如果在将来的某个时候,我决定我希望我的应用程序配置不同,因此我更改了配置文件的内容,当我没有将输入状态定义为参数时,这将更改我的reducer的输出。一方面,这听起来像是不纯的减量剂。另一方面,我也基本上重新编写了这个应用程序,所以对于这个版本的应用程序来说,它仍然可以被认为是纯粹的。后一种解释是正确的,还是我仍然缺少一些关于如何定义纯/不纯的信息?下面是进一步的场景:应用程序本身更改configDefaults文件的内容。在这种情况下,即使使用相同的reducer输入参数,reducer也可以在文件修改之前和之后生成不同的输出。这不是让还原剂变得不纯吗?你在处理一些东西,这会阻止你的应用程序的进程。我想,你不理解纯函数的含义。是的,纯函数是一种没有副作用的函数。然而,不仅如此。它也是一个给定相同的输入,总是产生相同的输出。我的问题归结为“输入”的定义。具有以下功能
const f=(a=default)=>{…}
a
是函数的唯一参数,也是调用函数时作为“输入”提供的唯一值。从这个角度来看,
f
是不纯的。但是,如果将代码<> < < /代码>和<代码>默认< /代码>作为“输入”,则可以考虑<代码> f>代码>为纯。所以,是的,我试图理解纯函数。