0
votes

Réducteurs Redux ajoutant une valeur à un objet multidimensionnel complexe

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: []
    }
},

},


0 commentaires

3 Réponses :


1
votes

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


0 commentaires

-1
votes

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


0 commentaires

0
votes
 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.

0 commentaires