私は、ユーザーが持っているときvuexストアを通知するfirebaseに「はをonAuthStateChanged」時計listenAuth機能を作成しようとしていますログインまたはログアウトします。限り、私は何かが不足していない限り、私はmutationハンドラを使ってstate.authDataを変更するだけです。Vuex&VueJS(変異ハンドラ外vuex店の状態を変化させません。)
は、私はエラーを取得しています:
[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)
}
0123ここで
は、同じ問題で苦労した後に私の店(かまい部品)
const mutations = {
AUTH_CHANGED (state, authData) {
state.authData = authData
}
}
const state = {
authData: {}
}
Vuex 2.0にアップグレードすることができます –