1
votes

Comment accéder à l'état des différents réducteurs dans React

J'ai une situation où j'ai besoin d'accéder aux données liées à l'authentification dans un autre module

Par exemple.

J'ai deux fichiers réducteurs différents

  • auth.js

  • todo.js

Je dois maintenant accéder à l'état du réducteur d'authentification dans todo, et pour cela, j'ai combiné le réducteur

Mais lorsque j'essaye de consoler les accessoires, je ne parviens pas à accéder aux données d'authentification dans le module todo

Avons-nous une approche simple pour cela, faites-le moi savoir


0 commentaires

3 Réponses :


0
votes

Vous devez consolider vos réducteurs dans un magasin Redux. Traditionnellement, vous feriez cela en importez {createStore, combineReducers} depuis "redux"

Et configurez votre boutique comme:

const store = createStore(combineReducers({
   auth: authReducer,
   todo: todoReducer
}))

Que la manière dont vos composants connectés ont accès aux deux états du réducteur à tout moment. Sinon, il n'y a aucun intérêt à mélanger les données entre les deux réducteurs. Les réducteurs doivent gérer leur propre état et agir de manière indépendante en tant que tels.


2 commentaires

J'ai déjà fait cela, mais je n'arrive pas à obtenir les détails du statut d'authentification dans le module todo


Qu'entendez-vous par «module todo», voulez-vous dire un composant ou un autre réducteur?



1
votes

Pensez que vous devez vous mapStateToProps

function mapStateToProps(state){

  return {
      auth: state.auth,
      todo: state.todo

  }
}


0 commentaires

0
votes

J'ai trouvé la solution en faisant de la R & D par moi-même

Le problème est que j'utilisais uniquement le réducteur todo dans mon module todo, mais si nous devons utiliser les différentes données du réducteur, nous devons mapper les états séparément, tout comme ci-dessous

const mapStateToProps = state => {
  const auth =
    state.get('auth') && state.get('auth').toJS && state.get('auth').toJS();
  const todo =
    state.get('todo') && state.get('todo').toJS && state.get('todo').toJS();
  return {
    ...auth,
    ...todo
  };
};

voici comment nous pouvons accéder à plusieurs données d'état dans nos modules en utilisant mapStateToProps et pouvons les renvoyer en fonction des besoins de l'entreprise


0 commentaires