【发布时间】:2017-09-05 19:26:40
【问题描述】:
我的 vuex 商店中有以下设置:我的用户使用 Firebase 身份验证登录。登录后,firebase.auth().onAuthStateChanged 被调用,user 设置为 state.user,但也保存在 Firebase 数据库中。当我添加代码的最后一部分 (database.ref...) 时,我的控制台因错误而爆炸。但是,这些错误与 Firebase 无关,而是与 Vuex 相关。
错误如下(x80):
[Vue 警告]:观察者“function () { return this._data.$$state }”的回调出错:
错误:[vuex] 不要在突变处理程序之外改变 vuex 存储状态。
我的代码仍然可以工作,但是在开发过程中,我不想在用户登录时看到 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
})
}
}
}
【问题讨论】:
标签: javascript firebase firebase-realtime-database vue.js vuex