当前位置: 首页 > 知识库问答 >
问题:

Vuex在通过开发工具手动提交更改之前不会提交更改

壤驷麒
2023-03-14

我有一个名为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
};

登录。vue代码

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

      this.getToken(userdata);
    }
  }

登录功能工作,令牌是第一次设置,但当我刷新浏览器的access_token不见了。

在浏览器中,它显示如下

但是如果我通过开发工具提交,它会起作用,状态会变得持久。

类似性质的问题,但不回答这个问题。

vuex提交不提交到存储

Vue2 Vuex提交未提交(不带Vue devtools)

运行Vuex突变,但组件在vue开发工具中手动提交之前不会更新

我如何才能使状态。通过代码访问\u令牌persistent?问题在于我丢失了状态的页面刷新。访问令牌值。

共有1个答案

谢墨竹
2023-03-14

您的代码很好,Vuex正在成功地将您的数据“提交”到商店。您遇到的问题来自这样一个事实,即Vuex(开箱即用)没有将您的数据保存在本地存储中,我相信这就是您所说的“提交”。正如在对您的问题的评论中多次提到的,您需要使用第三方软件包(大多数人使用Vuex-PersistedState,但我更喜欢Vuex-Perista,因为它更可定制,支持打字)。任何一种都非常容易上手。

使用Vuex-PersistedState,您需要使用新插件更新Vuex初始化。它应该看起来像这样:

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

const store = new Vuex.Store({
  plugins: [createPersistedState()] /// include the imported plugin
})
 类似资料:
  • 我有一个vue组件,我无法从从服务调用填充的计算属性中更新。 Feed.vue 从feed模块发送“feed/getFeed”的。。。 喂养单元js FeatsService.getFeed调用服务,该服务只运行一个读取并返回结果。然后调用提交('Feed成功',feed),运行突变,将state.currentFeed=feed设置为false,并将state.status.loading设置为

  • 在本文章教程中,我们将演示如何查看 Git 存储库的文件和提交文件记录,并对存储库中的文件作修改和提交。 注意:在开始学习本教程之前,先克隆一个存储库,有关如何克隆存储库,请参考: http://www.yiibai.com/git/git_clone_operation.html 在上一步中,我们已经修改了 main.py 文件中的代码,在代码中定义了两个变量并提交代码,但是要再次添加和修改ma

  • 我可以提交大量更改,但没有任何内容可以进入 github。 只有当我从菜单中手动单击 PUSH 函数时,它才会推送到 github。 如何让它在提交时自动执行此操作? 这些是我的VS GIT设置:

  • 我有 在我的构建中。gradle我有 但是尽管成功了-到我的数据库中,它并没有添加任何新表。我有postreSQL,其中包含我所有表所在的方案- 我的控制台输出

  • 在IntelliJ中,我通常使用CTRL K在提交之前调出一种更改审查屏幕。我可以使用F7逐个遍历每个更改。 有人知道VSCode中的等效扩展吗? 我已经尝试过gitLens和git diff历史。两者似乎都不提供该功能。

  • 我很难得到在商店工作的promise。 我通过一个动作调用突变,这似乎很有效。 该操作被导入到我的组件中: 然后叫: 这一切看起来都有效,但是当我检查Vue开发工具时,Vuex基本状态保持不变,并且我有一个活动突变(setPlace)。我可以点击“全部提交”来提交有效的突变。 在我的组件中,我在getter mapLocation上使用了一个监视程序,当我单击Commit All时会触发该监视程序