针对使用i18n国际化语言翻译切换后无反应,而修改代码后保存的热更新就有实现的问题
按正常情况引入i18n并注册使用后,一部分人可能会在data里声明
像我: 我是直接在data里赋值给了leftMenu变量
data() {
return {
leftMenu: this._.cloneDeep(this.$t("leftMenu"));
}
},
然后在接下来切换语言类型时,(只有这里声明在data里的数据,无法第一时间更改语言。其他地方没有影响)。只有在保存代码之后编译器的自动热更新一下,才能更改。也就是第一次无法更改
那么我就使用了watch监听属性:
leftMenu: {
deep: true,
immediate: true,
handler(val) {
console.log(val, "23333333333333333333333333333333333333");
this.leftMenu = val;
},
},
虽然使用了深度监听和立即执行。遗憾的是,照样都没有效果
'leftMenu': {
deep: true,
// immediate: true,
handler(val) {
console.log(val, "23333333333333333333333333333333333333");
this.leftMenu = val;
},
},
没办法,我就改成了对象模式。然后一样没有任何效果
然后百度了一下,说是不能写在啊data里,要写在computed里
改代码:
computed: {
leftMenu() {
return this._.cloneDeep(this.$t("leftMenu"));
},
},
保存之后,完美运行