用vuex把两个数据分别储存到sessionStorage,localStorage中
时间: 2023-07-16 10:14:45 浏览: 96
使用sessionStorage解决vuex在页面刷新后数据被清除的问题
可以在 Vuex 中定义两个模块,分别处理存储到 sessionStorage 和 localStorage 中的数据。
首先,在 `store.js` 中引入 `vuex` 和 `vuex-persistedstate`:
```javascript
import Vue from 'vue'
import Vuex from 'vuex'
import createPersistedState from 'vuex-persistedstate'
Vue.use(Vuex)
```
然后,定义两个模块 `sessionStorage` 和 `localStorage`:
```javascript
const sessionStorageModule = {
namespaced: true,
state: {
data: null
},
mutations: {
setData (state, data) {
state.data = data
}
},
plugins: [
createPersistedState({
storage: window.sessionStorage,
reducer: state => ({
data: state.data
})
})
]
}
const localStorageModule = {
namespaced: true,
state: {
data: null
},
mutations: {
setData (state, data) {
state.data = data
}
},
plugins: [
createPersistedState({
storage: window.localStorage,
reducer: state => ({
data: state.data
})
})
]
}
const store = new Vuex.Store({
modules: {
sessionStorage: sessionStorageModule,
localStorage: localStorageModule
}
})
export default store
```
这里使用了 `vuex-persistedstate` 插件来实现将数据持久化到 sessionStorage 和 localStorage 中。在定义模块时,通过 `plugins` 配置项将插件应用到模块上。`reducer` 函数指定了需要持久化的数据。
接下来,就可以在组件中通过 `mapMutations` 辅助函数来调用 mutations 了:
```javascript
import { mapMutations } from 'vuex'
export default {
methods: {
...mapMutations('sessionStorage', ['setDataToSessionStorage']),
...mapMutations('localStorage', ['setDataToLocalStorage']),
saveData () {
// 保存数据到 sessionStorage 和 localStorage
this.setDataToSessionStorage(this.data)
this.setDataToLocalStorage(this.data)
}
}
}
```
以上代码中,通过 `mapMutations` 辅助函数将 `setData` mutation 映射为 `setDataToSessionStorage` 和 `setDataToLocalStorage` 方法,以便在组件中使用。在 `saveData` 方法中,调用这两个方法即可将数据保存到 sessionStorage 和 localStorage 中。
阅读全文