Comment conserver l'état inchangé après l'actualisation de la page ?
P粉384244473
P粉384244473 2024-01-29 08:58:49
0
1
509

Salut à tous, j'essaie de trouver un moyen de conserver la valeur de mon statut après l'actualisation de la page. Actuellement, je stocke les valeurs dans le stockage local et j'ai essayé de nombreuses solutions pour garder l'utilisateur connecté après le rechargement de la page, cela ne fonctionne toujours pas. Cela s'arrête à chaque fois que j'actualise la page, toute aide serait grandement appréciée. Merci beaucoup.

Core.ts :

class Core {
      agv: typeof agv;
      auth: Auth;
      workflow: WorkflowApi;
      graphql: GraphQLSdk;
      fleetState: Stream<FleetState>;
      taskList: Stream<TaskList>;
      zoneList: Stream<ZoneList>;

  configuration = getConfiguration();

  url: string;

  constructor(options: Options) {
    const auth = getAuth(options);
    const graphqlUrl = `${options.host}/graphql`;
    const graphql = getSdk(new GraphQLClient(graphqlUrl, { fetch: authMiddleware({ auth, fetch: options.fetch }) }));

    const streamContext = {
      ...options,
      headers: getAuthHeaders(auth),
      getSites: () => auth.session.value?.sites || [],
    };

    this.auth = auth;
    this.workflow = getWorkflowApi({ auth }) ;
    this.graphql = graphql;
    this.fleetState = fleetState.call({
      ...options,
      headers: getAuthHeaders(auth),
      getSites: () => auth.session.value?.sites || [],
    });

    this.configuration.map.fetch = this.configuration.map.fetch.bind(async () => {
      const site = auth.session.value.sites[0];
      return graphql.map({ site }).then(({ map }) => map);
    });

    this.taskList = taskList.call(streamContext);
    this.zoneList = zoneList.call(streamContext);

    this.agv = {
      ...agv,
      graphql,
      map: this.configuration.map,
      getSites: () => auth.session.value?.sites || [],
    } as typeof agv;

    auth.session.listen(session => {
      window.localStorage.setItem('session', JSON.stringify(session));
      console.log(session);
      if (session) {
    this.configuration.map.fetch();
      }
    });
  }
}

export { Core };

P粉384244473
P粉384244473

répondre à tous(1)
P粉323374878

Si la session est conservée sur localStorage, comme suit

auth.session.listen(session => {
  window.localStorage.setItem('session', JSON.stringify(session));
  ...
})

Ensuite, je pense que vous pouvez initialiser à partir de localStorage dans getAuth comme ci-dessous

function getAuth({ host, fetch }: Dependencies) {
  const session = getEventEmitter({
    initialValue: JSON.parse(window.localStorage.getItem("session")),
  });

  ...

Si aucune séance ne reste en l'état, le formulaire null 是表达式的值,并以 initialValue est renvoyé.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal