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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容