Ich versuche, eine listenAuth Funktion zu erstellen, die "onAuthStateChanged" in Feuerbasis zu benachrichtigen, die vuex Speicher Uhren, wenn ein Benutzer eingeloggt oder abgemeldet. Soweit ich das beurteilen kann, modifiziere ich nur state.authData mit dem Mutationshandler, es sei denn, ich verpasse etwas?Vuex & VueJS (Sie mutieren nicht vuex store Zustand außerhalb Mutation Handler)
Ich erhalte die Fehlermeldung:
[vuex] Do not mutate vuex store state outside mutation handlers.
Hier ist mein App.vue Javascript (aus meiner Komponente)
<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>
Hier ist meine Aktion (changeAuth) Funktion
export const changeAuth = ({ dispatch, state }, authData) => {
dispatch(types.AUTH_CHANGED, authData)
}
meinen Speicher Hier ist (die Teile, die Materie)
const mutations = {
AUTH_CHANGED (state, authData) {
state.authData = authData
}
}
const state = {
authData: {}
}
Sie können auf Vuex 2.0 upgraden –