2016-07-13 7 views
3

に割り当てる私はReduxの店でこのinitialStateを持っている:activeがオブジェクトであるオブジェクトは動的変数

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

今私はactivedataプロパティにプロパティを追加したり、追加すべきであるという作用を有するが、そのように:あなたが見ることができるように

[DASHBOARD_TEMPLATE_DATA_RECEIVE]: (state, action) => { 
    return Object.assign({}, state, { 
     isFetching : false, 
     active  : Object.assign({}, active, {data[action.key]: action.data}) 
    }) 
} 

data[action.key]は許可されません。どうすればいいのですか?

答えて

4

これを試してみてください:

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

は、プロパティ名として文字列を使用するために角括弧表記法を利用して、最初のオブジェクトを構築します。

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

その新しく作成されたオブジェクトを使用します。

[DASHBOARD_TEMPLATE_DATA_RECEIVE]: (state, action) => { 
    return Object.assign({}, state, { 
     isFetching : false, 
     active  : Object.assign({}, active, data) 
    }) 
} 
+0

私はそれがあるべきだと思う: '活性:Object.assign({}、アクティブ、{データ})' –

+0

@JoeyHipolito、おそらくそれは、Reduxのに特異的なものである場合、そのために私はよく知られていません。しかし、バニラのjavascriptでは、 'data'はすでにオブジェクトであるため、' {} 'でそれを処理する必要はありません。 – Jamiec

1

私は、計算されたプロパティ名がうまくいくと思います。未テスト

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