2017-10-11 98 views
0

我有一個owner對象屬性,它對於許多父級對象是通用的。這就是我保持一致性的原因。這裏有一個簡單的例子:使用變量訪問reducer屬性

貓對象:

{ 
    "id": 1, 
    "name": "Johnny", 
    "owner": { 
     "id": 123, 
     "name": "Sam", 
     "phone": "307-555-1234" 
    }, 
    "gender": "male" 
} 

Car對象:

{ 
    "id": "lkj33k3j9992jj21", 
    "make": "BMW", 
    "model": "535i", 
    "owner": { 
     "id": 123, 
     "name": "Sam", 
     "phone": "307-555-1234" 
    }, 
    "mileage": 10 
} 

我創造,我可以在多個減速,將設置的owner性質使用操作。我的動作看起來是這樣的:

export const setOwnerProperties = (objectType, id, name, phone) => { 
    return { 
     type: types.SET_OWNER_PROPERTIES, 
     objectType, 
     id, 
     name, 
     phone 
    }; 
} 

的問題是如何以編程方式訪問objectType我減速?我嘗試了下面的代碼,但我得到一個編譯錯誤,我在下面的代碼中有state.[action.objectType]

case types.SET_OWNER_PROPERTIES: 
    return Object.assign({}, state, { 
     [action.objectType]: Object.assign({}, state.[action.objectType], { 
     id: action.id, 
     name: action.name, 
     phone: action.phone 
     }) 
    }) 

如何我可以訪問的objectTypeowner財產在我的狀態?

回答

0

這看起來很奇怪,您同時使用點符號和括號的符號做財產查找:

在哪裏,你應該這樣做:

Object.assign({}, state[action.objectType], { ... }) 

你這樣做:

Object.assign({}, state.[action.objectType], { ... }) 
+1

是!這是問題!一個點!會造成問題!!!謝謝 :-) – Sam