使用变量访问reducer属性

时间:2017-10-11 21:36:35

标签: redux react-redux

我有一个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}}属性?

1 个答案:

答案 0 :(得分:0)

这看起来很奇怪,你使用点符号和括号表示法进行属性查找:

你应该这样做:

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

你在做:

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