我正在使用vue js进行多语言支持,一切都很好,但是当我更改语言时,数据menuItem名称中的数据不会改变。
<template v-slot:MenuItem>
<MenuItems v-for="(Item,Index) in menuItem"
:key="Index"
:items="Item"
:depth="Index"
>
<router-link :to="Item.path">{{Item.name}}</router-link>
</MenuItems>
</template>
export default {
name: "Nav",
data() {
return {
menuItem: [
{
name: this.$t('navbar.home'),
path: '',
},
{
name: this.$t('navbar.gallery'),
path: 'gallery',
},
{
name: this.$t('navbar.contact'),
path: 'contact',
},
],
}
}
}
发布于 2022-04-05 03:40:57
数据()只在创建组件时调用一次,而且它不打算是反应性的。(因此,基本上在创建组件时,它将当前的转换作为初始值)
要使属性对$t()进行反应性,您应该使用计算的var来代替:
export default {
name: "Nav",
data() {
// exclude from here
return {};
},
computed: {
menuItem() {
return [
{
name: this.$t("navbar.home"),
path: "",
},
{
name: this.$t("navbar.gallery"),
path: "gallery",
},
{
name: this.$t("navbar.contact"),
path: "contact",
},
];
},
},
};
https://stackoverflow.com/questions/71749895
复制相似问题