超过最大调用堆栈大小(在Nuxt&x2B;Firebase项目中)
我目前正在Nuxt和Firebase中创建身份验证功能 登录和注销过程本身是可以完成的,标题显示也会相应地改变,但当我按下登录按钮时,控制台中出现了一个错误 错误内容(在控制台中) store/auth.js↓超过最大调用堆栈大小(在Nuxt&x2B;Firebase项目中),firebase,vue.js,nuxt.js,Firebase,Vue.js,Nuxt.js,我目前正在Nuxt和Firebase中创建身份验证功能 登录和注销过程本身是可以完成的,标题显示也会相应地改变,但当我按下登录按钮时,控制台中出现了一个错误 错误内容(在控制台中) store/auth.js↓ export const strict = false export const state = () => ({ user: null }) export const mutations = { SET_USER (state, payload) { stat
export const strict = false
export const state = () => ({
user: null
})
export const mutations = {
SET_USER (state, payload) {
state.user = payload
}
}
export const actions = {
setUser ({ commit }, user) {
commit('SET_USER',user)
}
}
export const getters = {
isAuthenticated (state) {
return !!state.user
}
}
default.vue↓
mounted () {
auth.onAuthStateChanged(user => {
const { uid, displayName, photoURL} = user
if (user) {
this.$store.dispatch('auth/setUser', { uid, displayName, photoURL})
} else {
this.$store.dispatch('auth/setUser', null)
}
})
}
如果我缺少任何信息,请告诉我我认为问题出在以下代码行:
export const mutations = {
SET_USER (state, payload) {
state.user = payload
}
}
export const actions = {
setUser ({ commit }, user) {
commit('SET_USER',user)
}
}
这个突变和动作之间有一个循环这个错误通常来自infinte递归。如果您可以提供一个带有复制的JSFIDLE或codepen,我可以更深入地了解auth变量是如何定义的?谢谢您的评论。这是auth变量const auth=firebase.auth(),谢谢!!我已经考虑过了,但我不知道如何修复它。请帮帮我。
mounted () {
auth.onAuthStateChanged(user => {
const { uid, displayName, photoURL} = user
if (user) {
this.$store.dispatch('auth/setUser', { uid, displayName, photoURL})
} else {
this.$store.dispatch('auth/setUser', null)
}
})
}
export const mutations = {
SET_USER (state, payload) {
state.user = payload
}
}
export const actions = {
setUser ({ commit }, user) {
commit('SET_USER',user)
}
}