2017-10-11 1 views
0

J'ai une propriété d'objet owner qui est commune à de nombreux objets de niveau parent. C'est comme ça que je le garde pour la cohérence. Voici un exemple simplifié:Accès à la propriété du réducteur avec la variable

objet Cat:

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

objet Car:

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

Je crée une action que je peux utiliser dans plusieurs réducteurs qui fixeront les propriétés de owner. Mon action ressemble à ceci:

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

La question est de savoir comment puis-je accéder à mon programme objectType réducteur? J'ai essayé le code suivant mais j'obtiens une erreur de compilation où j'ai state.[action.objectType] dans le code ci-dessous.

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 
     }) 
    }) 

Comment puis-je accéder à la propriété owner de objectType dans mon état?

Répondre

0

Cela semble étrange, vous utilisez deux points notation et support de la notation à faire de la propriété recherche:

Où que vous devriez faire ceci:

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

que vous faites:

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

Yup! C'était le problème! Un point! va créer un problème !!! Je vous remercie :-) – Sam