Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Vuex在';通过开发工具手动提交_Javascript_Vue.js_Vuejs2_Vuex_Vuex Modules - Fatal编程技术网

Javascript Vuex在';通过开发工具手动提交

Javascript Vuex在';通过开发工具手动提交,javascript,vue.js,vuejs2,vuex,vuex-modules,Javascript,Vue.js,Vuejs2,Vuex,Vuex Modules,我有一个名为login.js的vuex存储模块,如下所示 import axios from "axios"; import router from "@/router"; axios.defaults.baseURL = process.env.VUE_APP_API_ENDPOINT; const state = { access_token: localStorage.getItem("access_token") || null, }; const getters = {

我有一个名为login.js的vuex存储模块,如下所示

import axios from "axios";
import router from "@/router";

axios.defaults.baseURL = process.env.VUE_APP_API_ENDPOINT;

const state = {
  access_token: localStorage.getItem("access_token") || null,
};

const getters = {
  loggedIn() {
    return (
      state.access_token != null && localStorage.getItem("access_token") != null
    );
  }
};

const mutations = {
  doLogin(state, response) {
    const token = response.authentication_data.access_token;
    localStorage.setItem("access_token", token);
    state.access_token = token;
    router.push("/admin");
  };

const actions = {
  async getToken({ commit }, userdata) {
    let email = userdata.email;
    let password = userdata.password;
    let remember_me = userdata.remember_me;

    await axios
      .post("auth/login", null, {
        params: {
          email,
          password,
          remember_me
        }
      })
      .then(response => {
        if (response.data.meta.status == "true") {
          commit("doLogin", response.data);
        } else {
          alert("wrong password");
        }
      })
      .catch(error => {
        alert(error);
      });
  };

export default {
  state,
  getters,
  actions,
  mutations
};
login.vue代码

  methods: {
    ...mapActions(["getToken"]),
    login() {
      const userdata = {
        email: this.email,
        password: this.password,
        remember_me: true
      };

      this.getToken(userdata);
    }
  }
登录功能起作用,并且首次设置了令牌,但是当我刷新浏览器时,
access\u令牌
消失了

在浏览器中,如下图所示

但是,如果我通过开发工具提交,它就会工作,状态就会持久化

类似的性质的问题,所以,但不要回答这个问题


如何通过代码使
状态。访问\u令牌
持久化?问题在于页面刷新已丢失
状态。请访问\u令牌
值。

您的代码正常,Vuex正在成功地将数据“提交”到存储。您遇到的问题是Vuex(开箱即用)无法将您的数据持久保存在localStorage中,我相信这就是您所说的“提交”的意思。正如在对您的问题的评论中多次提到的,您将需要使用第三方软件包(大多数人使用,但我更喜欢,因为它更可定制,并且支持Typescript)。任何一个都很容易开始

使用Vuex PersistedState,您需要使用新插件更新Vuex初始化。它应该是这样的:

import createPersistedState from 'vuex-persistedstate' // import the package

const store = new Vuex.Store({
  plugins: [createPersistedState()] /// include the imported plugin
})

尝试使用它,我在我的store>index.js中使用它,如下所示:从“vuex persistedstate”导入createPersistedState从“js cookie”Vue导入cookie.use(vuex)//创建一个新的store const store=new vuex.store({plugins:[createPersistedState({getState:(key)=>Cookies.getJSON(key),setState:(key,state)=>Cookies.set(键,状态,{expires:3,secure:false}}),操作,getter,突变,状态})但是您可以使用localStorage而不是cookiesnpm包:@Sdpotts93这不是关于本地存储的,而是关于
状态。如果您希望在页面刷新后保持它,请访问\u令牌
@Techie,您需要将其存储在本地存储中。请参阅代码示例。我已经存储了访问\u令牌并检索了它。这与本地存储无关存储而不是
state.access\u令牌
对于
state.accesstoken
要在刷新期间保持,您需要某种本地存储,@Techie。请参阅代码示例。我已经存储了access\u令牌并进行了检索。您可以在定义和初始化“localStorage”的地方共享代码吗?