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.