我想使用Object.assign作为键的变量

时间:2018-03-16 07:06:54

标签: javascript reactjs ecmascript-6 redux

我有一个动作'set-style'发送到reducer,我在一个名为layers的对象数组中更改指定键对象的样式对象。

难点在于 - 'filterName'用于接收需要更改的属性名称。 如果我使用另一个属性名称,它的行为是正确的,但'filterName'变量不能用作键。

export const set_stl = (val,filterName,chosenLayerId,chosenLayerIdx=0,layers) => {
const specLayer = layers[chosenLayerIdx];
const assignedSpecLayer = Object.assign({}, specLayer, {
    stl: {
        ...specLayer.stl,
        filterName: val
    }
});
const newLayers = layers;
    newLayers[chosenLayerIdx] = assignedSpecLayer;
return dispatch => {
    dispatch({
        type: SET_STL,
        payload: newLayers,
    })
}

};

1 个答案:

答案 0 :(得分:1)

您需要使用[]来使用filterName

的值
stl: {
    ...specLayer.stl,
    [filterName]: val
}