【发布时间】:2016-11-16 19:58:10
【问题描述】:
我正在尝试创建一个 listenAuth 函数来监视 firebase 中的“onAuthStateChanged”以通知 vuex 商店 当用户登录或退出时。据我所知,我只是在使用突变处理程序修改 state.authData,除非我遗漏了什么?
我收到错误消息:
[vuex] Do not mutate vuex store state outside mutation handlers.
这是我的 App.vue javascript(来自我的组件)
<script>
// import Navigation from './components/Navigation'
import * as actions from './vuex/actions'
import store from './vuex/store'
import firebase from 'firebase/app'
export default {
store,
ready: function () {
this.listenAuth()
},
vuex: {
actions,
getters: {
authData: state => state.authData,
user: state => state.user
}
},
components: {
// Navigation
},
watch: {
authData (val) {
if (!val) {
this.redirectLogin
this.$route.router.go('/login')
}
}
},
methods: {
listenAuth: function () {
firebase.auth().onAuthStateChanged((authData) => {
this.changeAuth(authData)
})
}
}
}
</script>
这是我的操作(changeAuth)函数
export const changeAuth = ({ dispatch, state }, authData) => {
dispatch(types.AUTH_CHANGED, authData)
}
这是我的商店(重要的部分)
const mutations = {
AUTH_CHANGED (state, authData) {
state.authData = authData
}
}
const state = {
authData: {}
}
【问题讨论】:
-
你可能想升级到 Vuex 2.0
标签: javascript firebase vue.js firebase-authentication vuex