【发布时间】:2020-10-30 22:58:00
【问题描述】:
我有保存在window.localStorage 中的会话之间的数据。当一个新会话开始时,插件会抓取数据并将其添加到存储中。
// ./store/data.js
export const state = () => ({
data: []
})
export const mutations = {
addItemToData (state, item) {
state.data = state.data.push(item)
},
setData (state, data) {
state.data = data
},
}
// ./store/index.js
import localStorage from '../plugins/localStorage'
export const plugins = [localStorage]
// plugins/localStorage.js
const localStorage = store => {
store.subscribe((mutation, state) => {
if (mutation.type === 'data/addItemToData') {
console.log('saving added item to storage')
window.localStorage.setItem('data', JSON.stringify(state.data.data))
}
})
// called when the store is initialized
if (typeof window !== 'undefined') {
if (window.localStorage.data) {
store.commit('data/setData', JSON.parse(window.localStorage.getItem('data')))
}
}
}
export default localStorage
我已经投入了各种控制台语句,它们似乎都输出了它们应该输出的内容。数据在 localStorage 中,突变正在触发,但毕竟数据不在存储中。
任何帮助都会很棒,谢谢!
【问题讨论】:
标签: javascript vue.js nuxt.js vuex