Я создаю форму, в которой данные поступают из внешнего API и хранятся в Vuex. Я реализовал свойство Двустороннее вычисление, как в официальной документации Vuex< /а>
<template>
<form>
<div v-if="email">
<label for="email">E-Mail</label>
<input v-model="email" type="email" id="email">
</div>
</form>
</template>
<script>
export default {
computed: {
email: {
get() {
return this.$store.state.shop.customer.customer.email;
},
set(value) {
this.$store.commit('shop/customer/updateEmail', value);
}
},
}
}
</script>
все работает нормально, когда я захожу на компонент через маршрутизацию. Но если я перезагружу страницу, я получаю сообщение об ошибке:
undefined is not an object (evaluating 'this.$store.state.shop.customer.customer.email')
Из других тем, которые я читал, проблема в том, что вычисляемое свойство равно null при перезагрузке. Но после реализации директивы v-if
я все еще получаю эту ошибку. Я думаю, мне нужно найти способ, чтобы свойство не было нулевым, как запасной вариант, когда оно возвращает пустую строку.
Магазин VueX:
export const state = () => ({
customer: {},
})
export const getters = {
customer: state => state.customer,
}
export const mutations = {
updateEmail(state, email) {
state.customer.email = email;
},
}