2016-07-13 3 views
3

로 지정 내가 돌아 오는 매장이 initialState 있습니다 active 객체입니다개체 동적 변수

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

.

는 지금은 작업 해야 APPEND이 있거나과 같이, 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

시도 :

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

다음 새로 개체를 만든 것을 사용

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

은 속성 이름으로 문자열을 사용하는 대괄호 표기법을 사용하고, 먼저 객체를 구축 :

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

나는 그것을해야한다고 생각 : '활성 : Object.assign ({}, 활성, {데이터})' –

+0

@JoeyHipolito, 아마도 그 돌아 오는 특정 일 경우, 그게 익숙하지 않은 메신저. 그러나 바닐라 자바 ​​스크립트에서 '데이터'는 이미 객체이므로 '{}'로 처리 할 필요가 없습니다. – Jamiec

1

계산 된 속성 이름이 작동한다고 생각합니다. 테스트되지 않은

:

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