使用动态变量分配对象

时间:2016-07-13 15:48:31

标签: javascript object merge lodash assign

我的Redux商店里有这个initialState

const initialState = {
  isFetching : false,
  active     : {}
}

active是一个对象。

现在我有一个追加的操作,或者向active的{​​{1}}属性添加属性,如下所示:

data

如您所见,[DASHBOARD_TEMPLATE_DATA_RECEIVE]: (state, action) => { return Object.assign({}, state, { isFetching : false, active : Object.assign({}, active, {data[action.key]: action.data}) }) } 是不允许的。我该怎么做?

3 个答案:

答案 0 :(得分:4)

试试这个:

active: Object.assign({}, active, {
  data: Object.assign({}, data, {
    [action.key]: action.data
  })
})

答案 1 :(得分:1)

我猜计算属性名称可能有效。

未测试:

active: Object.assign({}, active, {[data[action.key]]: action.data})

答案 2 :(得分:0)

首先构建对象,使用方括号表示法将字符串用作属性名称:

Do you want to disconnect from the process <name of xdebug process>?

然后使用新创建的对象:

var data = {};
data[action.key] = action.data;