Próbuję zbudować naprawdę małą aplikację Vue z interfejsem Rails API. W tej chwili pracuję z Vue, Vue-Resource i Vuex. Pobieram wszystkich użytkowników z bazy danych i teraz spróbuję zaktualizować jedną z nich. Tak więc wszystko działa dobrze (łatka użytkownika), ale po uruchomieniu akcji updateUser chcę ponownie uruchomić akcję fetchUsers, aby zaktualizować magazyn Vuex.Jak wywoływać akcję wewnątrz akcji w Vuex
Ale kiedy fetchUsers biegnie wewnątrz obietnicy updateUser pojawia się następujący błąd:
undefined:1 Uncaught (in promise) TypeError: Cannot read property 'dispatch' of undefined
To właśnie moja vuex/actions.js szukasz:
export const fetchUsers = function ({ dispatch, state }) {
this.$http.get('http://localhost:3000/api/v1/users').then((response) => {
dispatch('SET_USERS', response.data)
}, (response) => {
dispatch('SET_USERS', [])
console.log(response)
})
}
export const updateUser = function ({ dispatch, state }, user) {
this.$http.patch('http://localhost:3000/api/v1/users/' + user.id, {user: user}).then((response) => {
fetchUsers()
}, (response) => {
console.log(response)
})
}
I teraz, gdy fetchUsers akcja jakoś traci kontekst (?), ale nie wiem, jak sobie z tym poradzić! dzięki za każdą pomoc!
mam taką samą strukturę, im uzyskiwanie fetchUsers nie jest zdefiniowana. –