提出[Bug Report]: https://jsfiddle.net/masongzhi/tpy4kv1e/8/
因为vue-i18n
在beforeDestroy中会注销this.$t
,所以在beforeDestroy不能调用this.$t
beforeDestroy (): void {
if (!this._i18n) { return }
if (this._subscribing) {
this._i18n.unsubscribeDataChanging(this)
delete this._subscribing
}
if (this._i18nWatcher) {
this._i18nWatcher()
delete this._i18nWatcher
}
if (this._localeWatcher) {
this._localeWatcher()
delete this._localeWatcher
}
this._i18n = null
}
可以将注销操作放在this.$nextTick
中执行
PR:https://github.com/kazupon/vue-i18n/pull/500
注意:这个解决方案只能解决同步代码,如果在异步代码中还是会报错,具体解决方法是引入Vue注册的i18n,调用i18n.t
替代this.$t
网友评论