首页 > 解决方案 > 带路径的 vue-persistedstate 减速器

问题描述

我使用带有特定模块的 vue-persistedstate 仅设置持久化,并且使用path属性运行良好。

但是当我尝试将它与 混合时reducer,设置中的模块path不再工作,并且减速器设置所有模块都保持不变。我应该如何使用减速器?

const persistedstate = new createPersistedState({
  key: "newsportal-vuex",
  storage: window.localStorage, 
  paths: ["auth", "venues", "play", "playWS", "purchaseSettings"], // only the persisted ones
  reducer(val) {
    if (!localStorage.getItem("newsportal_isuseracceptcookie")) {
      // DONT USE PERSISTEDSTATE IF USER DECLINE COOKIES
      return {};
    }
    return val; // <-this return ALL MODULES. i want to set only modules in path
  }
});

提前致谢

标签: javascriptvue.jsvuex

解决方案


刚刚意识到我需要重建对象

reducer(val, paths) {
    if (!localStorage.getItem("newsportal_isuseracceptcookie")) {
      // DONT USE PERSISTEDSTATE IF USER DECLINE COOKIES
      return {};
    }

    // make persisted state as in paths
    let reducer = {};

    Object.entries(val).forEach(entry => {
      const [key, value] = entry;
      if (paths.includes(key)) {
        reducer[key] = value;
      }
    });

    return reducer;
  }


推荐阅读