【问题标题】:Vue3 Vuex Persist not saving data appropriatelyVue3 Vuex Persist 未正确保存数据
【发布时间】:2021-10-15 20:39:57
【问题描述】:

我很难让 Vuex-Persist 正常工作。基本上,不应该保存数据:

其次,它会在刷新时消失。这破坏了图书馆的全部意义。

这是我的商店文件:

import { createStore } from "vuex";
import Modules from "./modules";
import VuexPersistence from "vuex-persist";
import Cookies from "js-cookie";

const vuexLocal = new VuexPersistence({
    restoreState: (key: any, storage: any): any => Cookies.get("my-abseil-v3"),
    saveState: (key, state, storage: any): any => {
        return Cookies.set("my-abseil-v3", state, {
            expires: 3,
        });
    },
    modules: ["Auth"],
});

export default createStore({
    plugins: [vuexLocal.plugin],
    modules: { ...Modules },
});

我的认证模块代码:

import { createStore } from "vuex";
import Modules from "./modules";
import VuexPersistence from "vuex-persist";
import Cookies from "js-cookie";

const vuexLocal = new VuexPersistence({
    restoreState: (key: any, storage: any): any => Cookies.get("my-abseil-v3"),
    saveState: (key, state, storage: any): any => {
        return Cookies.set("my-abseil-v3", state, {
            expires: 3,
        });
    },
    modules: ["Auth"],
});

export default createStore({
    plugins: [vuexLocal.plugin],
    modules: { ...Modules },
});

还有我的vue.config

module.exports = {
    transpileDependencies: ["vuex-persist"],
    css: {
        loaderOptions: {
            sass: {
                prependData: `@import "@/assets/css/components/_breakpoints.scss";`,
            },
        },
    },
};

这是documentations,所以不确定我错在哪里。

【问题讨论】:

  • 最终使用了不同的库。这在 Vue3 中根本行不通...

标签: typescript vuejs3


【解决方案1】:

这个呢?

const vuexLocal = new VuexPersistence({
  restoreState: (key, storage) => Cookies.getJSON(key),
  saveState: (key, state, storage) =>
    Cookies.set(key, state, {
      expires: 3
    }),
  modules: ["Auth"],
});

【讨论】:

  • 最终选择了 Vue persistdata 插件。实现起来要容易 100 倍
【解决方案2】:

您尝试过 JSON.stringify 和 JSON.parse 吗?

const vuexLocal = new VuexPersistence({
    restoreState: (key: any, storage: any): any => 
        JSON.parse(Cookies.get("my-abseil-v3")),
    saveState: (key, state, storage: any): any => {
        return Cookies.set("my-abseil-v3", JSON.stringify(state), {
            expires: 3,
        });
    },
    modules: ["Auth"],
});

【讨论】:

  • 没用 :(。实际上给了我一个类型错误 (string | undefined) can't be assigned to string.
猜你喜欢
  • 2020-02-16
  • 1970-01-01
  • 2019-09-26
  • 2019-07-31
  • 1970-01-01
  • 2021-06-19
  • 2012-07-26
  • 2012-08-25
  • 1970-01-01
相关资源
最近更新 更多