Лично я чувствую, что отправка данных обратно компоненту не идеальный способ.Вместо этого вы можете иметь другую константу (как показано ниже) в файле actions.js и получить ее для получения.Получите доступ к получателю в вашем компоненте как к вычисляемому свойству.
// actions.js
const state = {
api: {
fetch: {
inProgress: false,
completed: false,
success: false,
error: false,
},
data: {}
}
}
const getter = {
'API_DATA': state => {
return state.api
}
}
const mutations = {
'SET_API_DATA_FETCH_IN_PROGRESS': state => {
state.api.fetch.inProgress = true
state.api.fetch.completed = false
state.api.fetch.success = false
state.api.fetch.error = false
state.api.data = {}
},
'SET_API_DATA_FETCH_SUCCESS': (state, payload) => {
state.api.fetch.inProgress = false
state.api.fetch.completed = true
state.api.fetch.success = true
state.api.fetch.error = false
state.api.data = payload
},
'SET_API_DATA_FETCH_ERROR': (state, payload) => {
state.api.fetch.inProgress = false
state.api.fetch.completed = true
state.api.fetch.success = false
state.api.fetch.error = true
state.api.data = payload
}
}
const contactAuthor = ({ commit }, payload) => {
commit('SET_API_DATA_FETCH_IN_PROGRESS')
API.post('send-message', payload).then((response) => {
if (response.status === 200 && response.data.success) {
// WHAT TO RETURN HERE TO SET SUCCESS TO TRUE IN COMPONENT?
commit('SET_API_DATA_FETCH_SUCCESS', response)
} else {
commit('SET_API_DATA_FETCH_ERROR', response)
console.log('Something went wrong');
}
}).catch((error) => {
commit('SET_API_DATA_FETCH_ERROR', response)
console.log('Something went wrong');
});
}
// component.vue
computed: {
apiDataFetchSuccess() {
return this.$store.getters.API_DATA.fetch.success
},
apiData() {
return this.$store.getters.API_DATA.data
}
}