Tôi đang cố gắng để tạo ra một hàm listenAuth rằng đồng hồ "onAuthStateChanged" trong căn cứ hỏa lực để thông báo cho các cửa hàng vuex khi người dùng có đăng nhập hoặc đăng xuất. Theo như tôi có thể nói, tôi chỉ sửa đổi state.authData bằng cách sử dụng trình xử lý đột biến, trừ khi tôi đang thiếu một cái gì đó?Vuex & VueJS (Đừng đột biến lưu trữ nhà nước vuex bên ngoài xử lý đột biến)
Tôi nhận được lỗi:
[vuex] Do not mutate vuex store state outside mutation handlers.
Dưới đây là javascript App.vue của tôi (từ thành phần của tôi)
<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>
Dưới đây là hành động của tôi (changeAuth) chức năng
export const changeAuth = ({ dispatch, state }, authData) => {
dispatch(types.AUTH_CHANGED, authData)
}
Dưới đây là cửa hàng của tôi (những phần quan trọng)
const mutations = {
AUTH_CHANGED (state, authData) {
state.authData = authData
}
}
const state = {
authData: {}
}
Bạn có thể muốn nâng cấp lên Vuex 2.0 –