Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 具有可变指数的深度变化状态_Javascript_Reactjs_Redux - Fatal编程技术网

Javascript 具有可变指数的深度变化状态

Javascript 具有可变指数的深度变化状态,javascript,reactjs,redux,Javascript,Reactjs,Redux,我正试图按照[公认答案]中的说明进行操作 在我的特殊情况下,我有一个层,它实际上取决于用户选择的模型。我的结构: 现在在我的reducer中,我尝试了(只想将最喜欢的叶子更改为true): Javascript抱怨道。如果我试图将其提取到变量: const currentModelToFav = action.payload.model_id; let newStateForFavorites = {...state, models: { ...state.models

我正试图按照[公认答案]中的说明进行操作

在我的特殊情况下,我有一个层,它实际上取决于用户选择的模型。我的结构:

现在在我的reducer中,我尝试了(只想将最喜欢的叶子更改为true):

Javascript抱怨道。如果我试图将其提取到变量:

const currentModelToFav = action.payload.model_id;
let newStateForFavorites = {...state, models: {
            ...state.models,
            currentModelToFav: {
                ...state.models.currentModelToFav,
                details: {
                    ...state.models.currentModelToFav.details,
                    favorited: true
                }
            }
        }};
Javascript不关联常量。它会出错-currentModelToFav未定义-


知道我做错了什么吗?谢谢

如果要将变量用作属性名,则必须使用以下结构:

{[variableName] : value}

因此,您的对象文字将变成:

const currentModelToFav = action.payload.model_id;
let newStateForFavorites = {...state, models: {
        ...state.models,
       [currentModelToFav]: {
            ...state.models[currentModelToFav],
            details: {
                ...state.models[currentModelToFav].details,
                favorited: true
            }
        }
    }};

如果要将变量用作属性名称,则必须使用以下结构:

{[variableName] : value}

因此,您的对象文字将变成:

const currentModelToFav = action.payload.model_id;
let newStateForFavorites = {...state, models: {
        ...state.models,
       [currentModelToFav]: {
            ...state.models[currentModelToFav],
            details: {
                ...state.models[currentModelToFav].details,
                favorited: true
            }
        }
    }};
您需要使用来使用变量拉取对象关键点:

const currentModelToFav = action.payload.model_id;
let newStateForFavorites = {
    ...state, 
    models: {
        ...state.models,
        [currentModelToFav]: {
            ...state.models[currentModelToFav],
            details: {
                ...state.models[currentModelToFav].details,
                favorited: true
            }
        }
    }
};
您需要使用来使用变量拉取对象关键点:

const currentModelToFav = action.payload.model_id;
let newStateForFavorites = {
    ...state, 
    models: {
        ...state.models,
        [currentModelToFav]: {
            ...state.models[currentModelToFav],
            details: {
                ...state.models[currentModelToFav].details,
                favorited: true
            }
        }
    }
};

嵌套状态通常由嵌套还原器(通过@naomik组合)管理,我正在这样做。这只是其中一个还原程序,其形式只是存储状态的一部分。嵌套状态通常由嵌套还原程序(通过@naomik组合)管理。我正在这样做。这只是其中一个还原器,其形式只是存储状态的一部分。。