Closed MadokaKami closed 5 years ago
有一个参数 是 isFilter 如果设为 true 你list 列表里的就不会被存,其他的会被存
如果你只想使用 session 也有一个配置项 justSession
Readme 里面有详细的说明,希望能满足你的需求
现在假如传入一个空local,不传入session 和justSession,那么默认vuex 中的全部state都会存入localStorage中,请问这种情况您之前遇到过吗。
传空与不传一样😂 默认会存 localstorage 这是个 feature
在 Readme 里面写了的~~
不好意思我之前没有描述清楚,不是写成local:{},而是写成local:{list:[]},在我指定list 为空后,同样会把全部state传入localStorage。
if (!this.justSession) {
let local = this.local;
let localState = _.cloneDeep(state);
if (local) {
let { list, isFilter } = local;
if (list.length) {
localState = isFilter
? _.omit(localState, list)
: _.pick(localState, list);
}
}
this.localDBService.set(this.name, localState);
}
这是源码部分,如果你不需要存至 local 可以不写 local 字段,将 justSession 设置为 true。因为考虑到实际场景,传空数组和不传 效果是一致的
我想你是否只是需要这样就可以了
createVuexAlong({
name: "hello-vuex-along",
session: {
// 你的内容
},
justSession: true
})
嗯嗯,谢谢大佬~
嗯 那我就先 close 了,有问题可以再联系
我想可能是我的操作有些问题,麻烦大佬帮忙看下。 根据项目实际业务需求,我不希望值存入localStorage中,但现在的实现方式有点复杂,请问有更简洁的方式吗。 export default new Vuex.Store({ state: { test: 'default', otherValue: 'this is other value' }, mutations: { setTest(state) { state.test = '8888888' } }, plugins: [createVuexAlong({ name: "hello-vuex-along", // 如果不传入local属性或者local.list为[],值会默认保存的localStorage中 // local: { // 这里一定要这样写才能让{@code test}属性不保存到localStorage中 list:['null'] }, session: { list: ["test"] } })] }) 我在测试的时候采用了两个子页面,页面1 setTest,页面2控制台打印$store.state.test。 通过控制台打印:console.log(localStorage) 可见,若不设置local参数,localStorage会包含test otherValue两个属性,只有为local.list设置一个不存在的属性后,才不会将全部属性默认存入list。 关于这个问题,请问有更优雅的解决方案吗。