3 votes

Puis-je passer des tableaux simples dans redux state ?

J'ai commencé à apprendre à mieux connaître redux + reactjs

Par exemple, j'ai un réducteur de nouvelles ou de listes qui doit renvoyer un tableau contenant des nouvelles :

const list = [
    {id: 1, title: 'One'},
    {id: 2, title: 'Two'},
    {id: 3, title: 'Three'}
]

export function newsReducer(state = [], action) {
    switch (action.type) {
        case 'GET_NEWS':
            return list
        default:
            return state
    }
}

Ce code fonctionne correctement, mais dans d'autres articles j'ai vu qu'ils passaient des paramètres avec [...state, ...] et un format immuable ...

Je peux donc passer des paramètres simples ou je dois les passer dans un format immuable ?

Remerciements

3voto

AnilRedshift Points 4001

En résumé : Oui, vous pouvez passer des tableaux simples si cela vous convient le mieux.

Si vous utilisez un simple tableau, assurez-vous de renvoyer une valeur de nouveau lors des modifications.

Par exemple :

export function listChangeReducer = (state = [], action) => {
  switch action.type {
    case 'ADD_ITEM':
      // don't do this because you're mutating your state
      // state.push(action.item);
      // instead do this
      state = state.slice();
      state.push(action.item);
      // or alternatively you can use the destruct syntax
      //[...state, action.item];
      return state;

    break;
  }
};

Vous n'êtes pas obligé d'utiliser des structures de données immuables avec redux. C'est juste recommandé afin de ne pas muter accidentellement vos structures de données.

Les la documentation indique que les données doivent être immuables parce que

Redux et React-Redux utilisent tous deux une vérification superficielle de l'égalité. En particulier en particulier :

L'utilitaire combineReducers de Redux vérifie superficiellement les changements de référence causés par les réducteurs qu'il appelle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X