J'ai un objet dans mon initialState dans redux reducer.L'objet est multidimensionnel.L'objet est comme ci-dessous
tradings: { 'buy': { data: ['1212'] }, 'sell': { data: [] }, 'total': { data: [] }
Donc, quand je veux réduire une charge utile d'action ( ie: '1212'
) comment puis-je pousser un élément dans un tableau de données?
par exemple:
case 'EXCHANGE_BUY' : { return{ ...state, tradings: state.tradings['buy'].data.concat(action.payload) } }
Mais il ne renvoie qu'un tableau comme celui-ci : tradings: ['1212']
Comment puis-je obtenir comme ça>
tradings: { 'buy': { data: [] }, 'sell': { data: [] }, 'total': { data: [] } },
},
3 Réponses :
Vous devez vous assurer de cloner tous les niveaux de l'état de vos réducteurs redux. Vous pouvez le faire comme ceci:
case 'EXCHANGE_BUY' : { return{ ...state, tradings: { ...state.tradings, buy: { data: state.tradings.buy.data.concat(action.payload) } } } }
Utilisez l'opérateur de diffusion pour cloner jusqu'à ce que le niveau soit atteint:
case 'EXCHANGE_BUY' : { return{ ...state, tradings: { ...state.tradings, buy : { data: [...state.tradings.buy.data, action.payload] } } } }
case 'EXCHANGE_BUY': return { ...state, tradings: { ...state.tradings, buy: { data: { state.tradings.buy.data.concat(action.payload) } } } } Or the second approach you can use is Immutability helpers. Thanks.