Vue.js 组件内Mixin的调用方法(Vuejs)

Vue.js 组件内Mixin的调用方法(Vuejs),vue.js,vuejs2,Vue.js,Vuejs2,我无法从组件调用mixin方法,我得到了这个错误this.hello不是一个函数 我可以从Vue实例调用hello(),但无法在组件中调用它 怎么了 const mixin={ 方法:{ 你好(){ 返回“你好,世界!”; } }, 创建(){ log('Mixin Created!'); }, }; 常数cmp={ 创建(){ log('From Cmp:',this.hello()); }, }; 新Vue({ 组成部分:{ 化学机械抛光 }, el:“#vue应用程序”, mixin:

我无法从组件调用mixin方法,我得到了这个错误
this.hello不是一个函数

我可以从Vue实例调用
hello()
,但无法在组件中调用它

怎么了


const mixin={
方法:{
你好(){
返回“你好,世界!”;
}
},
创建(){
log('Mixin Created!');
},
};
常数cmp={
创建(){
log('From Cmp:',this.hello());
},
};
新Vue({
组成部分:{
化学机械抛光
},
el:“#vue应用程序”,
mixin:[mixin],
创建(){
log('From VM:',this.hello());
},
});

嗯,似乎我必须在整个组件实例中加载Mixin,而不是从Vue父实例:)

正确,Mixin方法/数据仅在其添加到的实例中可用。但是,如果您确实希望在根实例中使用mixin,您可以从根实例的任何子组件调用
this.$root.hello()
,如果将nuxt与vue@daxigu一起使用,则无法使用,因为
$root
本身就是nuxt。我能做什么?这:

this.$root.$children[1].myRootMethod()
  • $root:正如我前面所说,这是nuxt

  • $children[0]:正在加载

  • $children[1]:是您的主要组件,在我的例子中,它是一个基本布局,包含几个全局组件和一个全局混合


希望有帮助。

有没有一种方法我们只需要在vue父级上声明,这样我们就需要在子组件中重新声明它?