如何使用保存在 Nuxt 商店中的 Vuetify select 值修复不匹配的子节点?
How to fix mismatching childNodes with Vuetify select value saved in Nuxt store?
我正在将 Vuetify v-select
值保存到 Nuxt 商店。它有效,但每次我 刷新 我的页面时,我都会在控制台中收到不匹配的 childNodes 错误。
一种修复方法,将 test
设置为 select
的任何值,但我需要它在第一次使用时等于 null
。
我该如何解决?
components/Test.vue
<template>
<div>
value: {{ $store.state.test }}
<v-select
label="Test"
:value="$store.state.test"
:items="testItems"
@change="updateTest($event)"
/>
</div>
</template>
<script>
export default {
data() {
return {
testItems: [
{ text: 'Foo', value: 'F' },
{ text: 'Bar', value: 'B' },
],
}
},
methods: {
async updateTest(e) {
await this.$store.dispatch('commitTest', e)
},
},
}
</script>
store/index.js
export const state = () => ({
test: null,
})
export const mutations = {
TEST_UPDATE(state, payload) {
state.test = payload
},
}
export const actions = {
async commitTest({ commit }, payload) {
commit('TEST_UPDATE', payload)
},
}
出现这种情况是因为SSR含量不等于水化后的含量。您可以单击错误以查看这是从哪里来的,但这可能是因为 $store.state.test
.
的值
您可以将它们设置在 created
挂钩中而不是直接设置,或者您可以将来自 Vuex 的内容包装到 <client-only>...</client-only>
标记中。这样,它就不会在服务器上生成,而只会在客户端渲染时生成。
有关这篇精彩文章的更多信息:https://blog.lichter.io/posts/vue-hydration-error/
我正在将 Vuetify v-select
值保存到 Nuxt 商店。它有效,但每次我 刷新 我的页面时,我都会在控制台中收到不匹配的 childNodes 错误。
一种修复方法,将 test
设置为 select
的任何值,但我需要它在第一次使用时等于 null
。
我该如何解决?
components/Test.vue
<template>
<div>
value: {{ $store.state.test }}
<v-select
label="Test"
:value="$store.state.test"
:items="testItems"
@change="updateTest($event)"
/>
</div>
</template>
<script>
export default {
data() {
return {
testItems: [
{ text: 'Foo', value: 'F' },
{ text: 'Bar', value: 'B' },
],
}
},
methods: {
async updateTest(e) {
await this.$store.dispatch('commitTest', e)
},
},
}
</script>
store/index.js
export const state = () => ({
test: null,
})
export const mutations = {
TEST_UPDATE(state, payload) {
state.test = payload
},
}
export const actions = {
async commitTest({ commit }, payload) {
commit('TEST_UPDATE', payload)
},
}
出现这种情况是因为SSR含量不等于水化后的含量。您可以单击错误以查看这是从哪里来的,但这可能是因为 $store.state.test
.
您可以将它们设置在 created
挂钩中而不是直接设置,或者您可以将来自 Vuex 的内容包装到 <client-only>...</client-only>
标记中。这样,它就不会在服务器上生成,而只会在客户端渲染时生成。
有关这篇精彩文章的更多信息:https://blog.lichter.io/posts/vue-hydration-error/