2

是否可以在一个组件中使用从 VueJS 插件导入的 mixin?

我创建了一个插件,当我导入它时,我可以从我的所有组件中访问 mixin 的功能。

有没有办法让它只在一个组件中可用?还是所有插件都根据定义向 Vue 添加了全局级功能?

4

2 回答 2

1

恕我直言,您应该使用创建两件事:

  • 全局导入必需品的插件
  • 你想要的组件中需要导入的mixin

例子:

//main.js
import {MyPlugin} from 'my-library'

vue.use(MyPlugin)

在组件中

//component.vue
import {MyMixin} from 'my-library'

export default {
   mixins: [myMixin],
}
于 2020-11-05T10:08:58.107 回答
1

您可以在全局或本地注册 mixin。如果你没有全局注册一个 mixin,它只会在本地注册的组件中可用。因此,通过本地注册,您可以使 mixin 仅在特定组件中可用

全局注册:只需要在main.js文件 中声明即可
Nb:不需要在组件中注册mixin

  • 视图 2:
// main.js
import myMixin from './mixins/myMixin'

Vue.mixin(myMixin)     // makes the plugin globally available 
new Vue({
   // ...
}).$mount('#app')

  • 视图 3:
// main.js
import myMixin from './mixins/myMixin'

const app = createApp(App)
app.mixin(myMixin)     // makes the plugin globally available 
app.mount('#app')

在本地注册:您不在文件中声明它,而是在main.js相关组件中注册 mixin

// componentWithMixin.vue
import myMixins from "../mixins/myMixin"

export default {
    // ...
    mixins: [myMixins]     // importing the mixin - without this line, the mixin can't be available
}
于 2020-11-08T10:01:03.340 回答