Mixin метод для отправки тостов не работает, когда не в основном цикле - PullRequest
0 голосов
/ 28 апреля 2020

Я использую VueJS и метод Vue mixin, как этот, чтобы этот метод toast был доступен в моих компонентах:

Vue.mixin({
  methods: {
    makeSuccessToast(message, toaster) {
      this.$bvToast.toast(message, {
        title: 'Success',
        variant: 'success',
        toaster: toaster || 'b-toaster-bottom-right',
        solid: true,
        autoHideDelay: 2000,
        noHoverPause: true,
        appendToast: true,
      });
    },
  },
});

Он не работает при вызове этого метода через setTimeout или setIntervall или при откате его с loda sh. Он просто не будет работать при попытке сделать тосты с помощью помощника тостов bootstrap vue из основного процесса l oop. Кто-нибудь знает исправление для него?

Пример, когда оно не будет работать внутри VueJS компонента:

через setTimeout в компоненте method:

    doSomething() {
      setTimeout(() => {this.makeSuccessToast('Something happened')}, 2000);
    }

via loda sh debounce:

  data(){
    this.dsth: ()=>{};
  },
  methods:{
    doSomething() {
      this.makeSuccessToast('Something happened');
    }
  },
  mounted() {
   this.dsth = this._.debounce(this.doSomething, 5000);
  }

Edit :

Я не осознавал, что делал Toast в компоненте, который получает удален. Тост должен был быть уведомлением об удалении этого компонента. Тосты будут исчезать sh, как только компонент будет удален, поэтому я подумал, что он не работает. Решение состояло в том, чтобы отправить тосты на элемент root в методе Mixin:

this.$root.$bvToast.toast(...)

...