Vue.js 如何从mixin访问Vue实例?

Vue.js 如何从mixin访问Vue实例?,vue.js,vuex,nuxt.js,Vue.js,Vuex,Nuxt.js,我想实现这种逻辑,将this.$store.value分配给本地数据。 例如,我在pages/index.vue中就是这样做的 method: { this.value = this.$store.value } 我想把它写进mixin中,因为我实际上在它周围有另一个逻辑,我使用了一些页面 但是,我不知道如何从mixin访问此(VueInstance)。Vue不支持它,因为mixin在组件代码之前先运行, 然后,Vue将mixin绑定(合并)到组件实例,这样就很容易从组件/实例范围访问mi

我想实现这种逻辑,将
this.$store.value
分配给本地数据。 例如,我在pages/index.vue中就是这样做的

method: {
  this.value = this.$store.value
}
我想把它写进mixin中,因为我实际上在它周围有另一个逻辑,我使用了一些页面


但是,我不知道如何从mixin访问此(VueInstance)。

Vue不支持它,因为mixin在组件代码之前先运行, 然后,Vue将mixin绑定(合并)到组件实例,这样就很容易从组件/实例范围访问mixin,但反之亦然

为了满足您的需要,我认为mixin方法(比如创建的
)应该以组件实例的给定引用作为参数来运行,但它不是这样的

但是,如果您重新组织代码以运行从
实例
创建的

可以访问这些方法和mixin数据,并自行传递参数:

var mixin = {
  data: {mixin: 'mixin'},
  created: function () {
    console.log('mixin hook called')
  },
  methods: { test: function(arg){console.log(arg); } }
};

vm=new Vue({
  data: {component: 'component'},
  mixins: [mixin],
  created: function () {
    console.log('called hook of ' + this.component + ' and accessing ' + this.mixin)
  },
});

vm.test(vm.mixin);
vm.test(vm.component);  // no problem to run mixin's method with component's data

> mixin hook called
> called hook of component and accessing mixin
> mixin
> component