我有一个owner
对象属性,对许多父级对象都是通用的。这就是我保持一致性的方法。这是一个简单的例子:
猫对象:
{
"id": 1,
"name": "Johnny",
"owner": {
"id": 123,
"name": "Sam",
"phone": "307-555-1234"
},
"gender": "male"
}
汽车对象:
{
"id": "lkj33k3j9992jj21",
"make": "BMW",
"model": "535i",
"owner": {
"id": 123,
"name": "Sam",
"phone": "307-555-1234"
},
"mileage": 10
}
我正在创建一个可以在多个reducers中使用的动作,它将设置owner
的属性。我的行为如下:
export const setOwnerProperties = (objectType, id, name, phone) => {
return {
type: types.SET_OWNER_PROPERTIES,
objectType,
id,
name,
phone
};
}
问题是如何在我的reducer中以编程方式访问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
})
})
如何在我的州内访问owner
的{{1}}属性?
答案 0 :(得分:0)
这看起来很奇怪,你使用点符号和括号表示法进行属性查找:
你应该这样做:
Object.assign({}, state[action.objectType], { ... })
你在做:
Object.assign({}, state.[action.objectType], { ... })