我正在尝试从localStorage获取一个值,以确定存储中变量的值。我记得大约一年前尝试使用vuejs进行类似的操作,但似乎可行。我在Reactjs上也没有任何问题。但是由于某些原因,在Nuxt中执行相同操作时,我总是收到此错误
这是我的 user.js 文件
export const state = () => ({
isLoggedIn: !!localStorage.getItem('userDetails')
})
export const mutations = {
login(state) {
state.isLoggedIn = true;
},
logout(state) {
window.localStorage.clear()
state.isLoggedIn = false;
}
}
我要解决这个问题错了吗?还是不应该这样做?任何帮助表示赞赏。
答案 0 :(得分:2)
尝试这样:
isLoggedIn: process.server ? '' : !!localStorage.getItem('userDetails')
问题在于,当nuxt在服务器端时,您尝试访问localstorage。您需要检查process.server
是否在服务器端。返回true或false。
我没有测试它,但是使用此三元运算符,它应该可以工作。
答案 1 :(得分:2)
使用SSR时,您无权访问浏览器存储。
要解决此问题,您可以在已安装的组件挂钩上分派操作。
mounted() {
if(!process.client) return;
const savedData = localStorage.getItem("userDetails");
if(savedData){
this.$store.commit('myMutation',savedData)
}
}
答案 2 :(得分:0)
我可以看到您尚未设置任何本地存储。请通过
设置本地存储localstorage.setItem()