Разбираюсь с vuex, столкнулся со следующей проблемой:
начальное состояние вызывается в computed, метод saveProfile вызывается по клику. Все работает, но хочется, чтоб saveProfile или действие, которое внутри - this.$store.dispatch('loadInfo') вызывалось сразу после того, как загружено начальное состояние. Не понимаю, как это сделать.
Фрагмент компонента:
<script>
import { mapState } from 'vuex';
import { mapMutations } from 'vuex';
import { mapActions } from 'vuex';
export default {
name: 'profile',
computed: mapState({
user: state => state.user,
checked: state => state.checked,
}),
methods: {
saveProfile () {
this.$store.dispatch('loadInfo');
},
selectGender (event) {
const gender = event.target.value;
this.$store.commit('chooseGender', gender);
}
}
}
</script>
и хранилище
import Vue from 'vue'
import Vuex from 'vuex'
import axios from 'axios'
import VueAxios from 'vue-axios'
import { GET_USER_INFO } from './mutation-types'
Vue.use(Vuex)
const store = new Vuex.Store({
state: {
user: [],
checked: 0
},
mutations: {
[GET_USER_INFO](state) {
axios.get('http://localhost:3000/user')
.then((response) => {
state.user = response.data;
state.checked = state.user.gender;
})
.catch(function(error) {
console.log(error);
});
},
chooseGender(state, gender) {
state.checked = gender;
}
},
actions: {
loadInfo ({ commit }) {
commit(GET_USER_INFO);
}
}
});
export default store;