vue-i18n beforeDestroy不能调用this.$t

提出[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

你可能感兴趣的:(vue-i18n beforeDestroy不能调用this.$t)