在刷新第一页时,asyncData函数无法获取持久状态。当我跟随另一个NuxtLink并返回到此页面时,虽然状态同时没有发生变化,但数据仍然存在。这意味着在第一次加载/刷新时,持久状态在服务器端不可用。我选择在LocalStorage中保留相关状态项。
使用asyncData的页面组件:
asyncData({ app, params, store }) {
//its not available upon first refresh, but is after following a random nuxtlink and going back
const cartProducts = store.getters.getCartProducts
},
store / index.js很简单。不幸的是,刷新首页后,asyncData中的状态完全为空。
getCartProducts(state) {
return state.cart.products
},
按照Github自述文件中的建议,以'client'模式正确导入了vuex-persist.js
import VuexPersistence from 'vuex-persist'
/** https://github.com/championswimmer/vuex-persist#tips-for-nuxt */
export default ({ store }) => {
window.onNuxtReady(() => {
new VuexPersistence({
key: 'cartStorage'
/* your options */
}).plugin(store)
})
}
如何在 调用asyncData之前确保本地存储中的相关存储条件得以保留?
答案 0 :(得分:1)
你不能。不可能。服务器上没有本地存储。并且asyncData在第一次加载/刷新时在服务器上执行。因此,即使从理论上讲,也无法从服务器上的本地存储中的asyncData中获取数据。