suchen

Heim  >  Fragen und Antworten  >  Hauptteil

„vuex-persistedstate zum Wechseln zwischen sessionStorage und localStorage“

<p>Wenn der Benutzer das Kontrollkästchen „Angemeldet bleiben“ aktiviert, möchte ich von sessionStorage zu localStorage wechseln, während ich vuex-persistedstate verwende</p> <pre class="brush:php;toolbar:false;">export default store(function (/* { ssrContext } */) { const Store = createStore({ Zustand: { }, Aktionen: { setLodingMode({ commit }, newMode) { commit("SET_LOADING_MODE", newMode); }, resetStates({ commit }) { commit("AUTHENTICATION_RESET_STATE"); commit("login/RESET_STATE"); }, }, Module: {Anmeldung, Authentifizierung}, Plugins: [createPersistedState()], }); Rückgabe Store; });</pre> <p>Der Punkt ist, dass ich Änderungen wie diese vornehmen möchte</p> <pre class="brush:php;toolbar:false;">state: { Flagge: falsch }, Plugins: [ createPersistedState({ storage: flag ? window.localStorage : window.sessionStorage, }), ],</pre> <p>Ich möchte, dass sich die Flagge basierend auf dem Kontrollkästchen „Angemeldet bleiben“ ändert, das der Benutzer beim Anmelden auswählt. Wenn der Benutzer also das Kontrollkästchen auswählt, wird die Flagge wahr und alle Daten werden in localStorage gespeichert</p>
P粉295728625P粉295728625483 Tage vor548

Antworte allen(1)Ich werde antworten

  • P粉658954914

    P粉6589549142023-08-26 11:07:29

    根据@Estus Flask的评论,我使用了自定义存储,并通过直接调用localStorage来管理“记住我”选项,并在localStorage中设置了一个标志。

    plugins: [
          createPersistedState({
            paths: ["authentication.userAuthenticationInfo"],
            storage: {
              getItem(key) {
                if (localStorage.getItem("rememberMe") == 1) {
                  return localStorage.getItem(key);
                } else {
                  return Cookies.get(key);
                  //return sessionStorage.getItem(key);
                }
              },
              setItem(key, value) {
                if (localStorage.getItem("rememberMe") == 1) {
                  localStorage.setItem(key, value);
                } else {
                  Cookies.set(key, value);
                  //sessionStorage.setItem(key, value);
                }
              },
              removeItem(key) {
                if (localStorage.getItem("rememberMe") == 1) {
                  localStorage.removeItem(key);
                } else {
                  Cookies.remove(key);
                  //sessionStorage.removeItem(key);
                }
              },
            },
          }),
        ],

    并且我在每次注销或401响应时清除localStorage。

    Antwort
    0
  • StornierenAntwort