我在vuex商店中进行了以下设置:我的用户使用Firebase身份验证登录.登录后,将调用firebase.auth().onAuthStateChanged,并将用户设置为state.user,但也会保存在Firebase数据库中.当我添加代码的最后一部分(database.ref …)时,我的控制台会出现错误.但是,错误与Firebase无关,而与Vuex无关.
错误如下(x80):
[Vue warn]: Error in callback for watcher “function () { return this._data.$$state }”:
Error: [vuex] Do not mutate vuex store state outside mutation handlers.
我的代码仍然有效,但在开发过程中,我不希望在用户登录时看到80个错误.我怎样才能摆脱这些错误?
// actions
const actions = {
startListeningToAuth ({ commit }) {
firebase.auth().onAuthStateChanged((user) => {
commit(types.SET_USER,{ user })
})
}
}
// mutations
const mutations = {
[types.SET_USER] (state,{ user }) {
state.user = user
if (user) {
database.ref('users/' + user.uid).set({
name: user.displayName,email: user.email,photo_url: user.photoURL
})
}
}
}
最佳答案
您可以使用toJSON()方法到firebase.User接口
原文链接:https://www.f2er.com/js/429153.htmlcommit(types.SET_USER,{ user.toJSON() })
这将允许在没有警告的情况下将用户数据添加到您的商店,但我猜您可以从firebase中丢失实时用户状态.
见https://firebase.google.com/docs/reference/js/firebase.User#toJSON