Vuejs: локально использовать импортированный плагин mixin

Можно ли использовать миксин, импортированный из плагина VueJS, в одном компоненте?

Я создал плагин, и когда я его импортирую, я могу получить доступ к функциям миксина из всех моих компонентов.

Есть ли способ сделать его доступным только в одном компоненте? или все плагины по определению добавляют к Vue функциональность глобального уровня?


person walox    schedule 05.11.2020    source источник
comment
Проще говоря: конечно, это так. Просто зарегистрируйте этот миксин в определенном компоненте, и все готово.   -  person Aer0    schedule 05.11.2020
comment
Не сработало, даже если я зарегистрировал его в одном компоненте, он стал доступен для всех остальных.   -  person walox    schedule 05.11.2020


Ответы (2)


Вы можете зарегистрировать миксин как глобально, так и локально. Если вы не зарегистрируете миксин глобально, он будет доступен только в тех компонентах, где он зарегистрирован локально. Таким образом, при локальной регистрации вы можете сделать миксин доступным только для определенных компонентов.

Глобальная регистрация: вам просто нужно объявить это в main.js файле
Nb: вам не нужно регистрировать миксин в компонентах

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

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

  • Vue 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 файле, а регистрируете миксин в соответствующих компонентах.

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

export default {
    // ...
    mixins: [myMixins]     // importing the mixin - without this line, the mixin can't be available
}
person Elise Patrikainen    schedule 08.11.2020

IMHO вы должны использовать create 2 вещи:

  • плагин, который импортирует самое необходимое по всему миру
  • миксин, который нужно импортировать в нужные вам компоненты

пример:

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

vue.use(MyPlugin)

в компоненте

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

export default {
   mixins: [myMixin],
}
person Cosimo Chellini    schedule 05.11.2020