Когда я вызываю действие Vuex и выполняю запрос топора ios, это не обновляет весь мой элемент localStorage, это очень странно.
Мой запрос топора ios может вернуть объекты или пустую коллекцию, и я хотел бы постоянно обновлять мой userDailyFoods
элемент. Я записываю в журнал свою мутацию и геттер, и это работает, но для обновления элемента localStorage это ошибка. Иногда я получаю результат, иногда нет.
Что я делаю не так?
действие:
updateUserDailyFoods(context, data) {
let date = data.data
if (date) {
axios.get(`/user/daily/food/${context.getters.user.id}/${date}/`).then(r => {
context.commit('userDailyFoods', {
userDailyFoods: r.data.data
});
localStorage.setItem('userDailyFoods', JSON.stringify(r.data.data));
}).catch(e => {
console.log(e)
})
}
console.log(localStorage.getItem('userDailyFoods'));
}
мутация:
userDailyFoods (state, payload) {
if(payload) {
state.userDailyFoods = payload.userDailyFoods
}
},
геттер:
userDailyFoods(state){
return state.userDailyFoods
}
состояние:
userDailyFoods: JSON.parse(localStorage.getItem('userDailyFoods')) || [],
ОБНОВЛЕНО
когда я go добавляю к моему компоненту вида
computed: {
userDailyFoods() {
return this.$store.state.userDailyFoods
},
}
и я консоль записываю в журнал свои действия:
console.log(this.userDailyFoods)
затем результат обновляется после двух кликов, а не только одного.
getDaySelected(day) {
var day = moment(day).format('YYYY-MM-DD');
this.$store.dispatch('updateUserDailyFoods', {
data: day
})
console.log(this.userDailyFoods)
this.$parent.$data.foods = this.userDailyFoods
}