有什么方法可以在不使用 $root 的情况下从根实例调用 mixin(方法)?

Any way to call a mixin (method) from the root instance without using $root?

各位程序员大家好,我需要一些帮助: 我想调用以下方法,之前没有 $root。 那可能吗? 我正在使用 Vue 单文件组件。 我得到以下信息:

//app.js

const mixin = {
methods: {
    makeToast(title = "", content = "", hideAfter = 5000, position = 'b-toaster-bottom-right', append = true) {
        this.$bvToast.toast(`${content}`, {
            title: title,
            toaster: position,
            appendToast: append,
            autoHideDelay: hideAfter,
        })
    }
  }
}

const app = new Vue({
    el: '#vue-app',
    i18n,
    mixins: [mixin],
});

然后可以像

一样调用
<b-button @click="$root.makeToast('title','content here',2000);">CLICK FOR TOAST</b-button>

在我拥有的每个组件中。这很好用,但我只想通过 makeToast 调用该方法,而不是之前使用 $root 。 我在初始化 vue 实例时尝试了以下操作:

const app = new Vue({
    el: '#vue-app',
    i18n,
    mounted: function() {
        var makeToast = this.$root.makeToast;
        return makeToast;
    },
    mixins: [mixin],
});

也有创建的、有和没有 return 等许多不同的方法,比如这个。 我不知道如何完成这项工作。 任何帮助以及解释或旁注将不胜感激。 感谢您的宝贵时间!

编辑:我在这里尝试了 ,但没有成功。它告诉我函数未定义或为空或任何错误,具体取决于我的尝试。 可能是因为我在组件内部使用这个函数?

我偶然找到了解决方案(或者更确切地说,重新阅读文档)

使用 Vue 原型:

Vue.prototype.$flash = function (title = "", content = "", hideAfter = 5000, position = 'b-toaster-bottom-right', append = true) {
    this.$bvToast.toast(`${content}`, {
        title: title,
        toaster: position,
        appendToast: append,
        autoHideDelay: hideAfter,
    })
};

在 app.js 中,然后你可以在每个组件中使用 $flash(PARAMS HERE)!