2 votes

Application exemple ngrx/strore, pourquoi l'état enfant étend-il l'état racine?

Je joue avec l'application exemple de ngrx-store https://github.com/ngrx/platform/tree/master/example-app et je n'arrive pas à comprendre un morceau de code dans le fichier "app\auth\reducers\index.ts"

export interface State extends fromRoot.State {
  auth: AuthState;
}

Dans le même fichier, nous avons déjà une interface qui décrit un état

export interface AuthState {
  status: fromAuth.State;
  loginPage: fromLoginPage.State;
}

Alors pourquoi devrions-nous créer un autre état, et plus important encore, pourquoi ce nouvel état devrait-il étendre l'état racine?

Voici l'état racine

export interface State {
  layout: fromLayout.State;
  routerReducer: fromRouter.RouterReducerState;
}

N'est-ce pas que tout l'état est simplement un objet qui contient tous les états enfants, comme l'état auth et l'état des livres? Alors cela pourrait ressembler à

{
  root: rootState,
  auth: authState,
  books: booksState
}

Ensuite, lorsque un état enfant étend l'état racine, il ajoute simplement plus d'informations à l'état enfant, qui ne lui sont pas pertinentes? Donc dans ce cas authState et booksState contiennent les mêmes informations que rootState plus ses propres informations?

1voto

Zacol Points 78

Suivant les commentaires dans app\réducteurs\index.ts:

Comme mentionné, nous traitons chaque réducteur comme une table dans une base de données. Cela signifie que notre interface de niveau supérieur est simplement une carte des clés vers les types de données internes.

Dans cet exemple, interface AuthState décrit l'état d'un module de fonctionnalité.

interface State étend fromRoot.State vous donne des informations sur l'état complet accessible à partir de ce module de fonctionnalité (état du module de fonctionnalité + état de niveau supérieur). Sous le même nom, vous devez conserver différentes informations en fonction du module de fonctionnalité. C'est une bonne pratique.

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