当我更改v-text-field
的值时,可以从开发人员工具的“ Vue”选项卡中看到,lastName
的值在user
存储区中使用以下代码进行了更新。 。但是,由于某种原因,下面模板中的3个测试的值未更新(或同步)。为什么呢我的代码有什么问题?
pages/home.vue
:
<template>
<v-container>
<v-container>
<v-row>
<v-col>
<v-text-field v-model="lastName" />
</v-col>
</v-row>
</v-container>
TEST 1:
{{ $store.state.user.last_name }}
TEST 2:
{{ lastName }}
TEST 3:
<v-text-field v-model="lastName" />
</v-container>
</template>
<script>
export default {
computed: {
lastName: {
get() {
return this.$store.state.user.last_name
},
set(value) {
this.$store.commit('user/UPDATE_PROP', ['last_name', value])
}
}
}
}
</script>
store/user.js
export const mutations = {
UPDATE_PROP(state, payload) {
state[payload[0]] = payload[1]
}
}
答案 0 :(得分:0)
我认为问题在于您设置商店的方式。根据Nuxt documentation,
您创建一个store
目录,并且
store目录中的每个.js文件都转换为命名空间模块(索引是根模块)。
此外,根据文档,
...您的状态值应始终是避免在服务器端出现不必要的共享状态的函数。
您的状态应如下所示
export const state = () => ({
last_name: ''
})
export const mutations = {
UPDATE_PROP(state, payload) {
state[payload[0]] = payload[1]
}
}