3
votes

Ajouter une variable globale dans Vue.js 3

Quelqu'un sait-il comment ajouter une variable globale dans Vue 3?

dans Vue 2, nous utilisons ceci dans le fichier main.js :

Vue.prototype.$myGlobalVariable = globalVariable


3 commentaires

stackoverflow.com/a/40897670/2815635


Vous pouvez utiliser Vuex pour gérer toutes les données globales


Oui bien sûr, je peux utiliser le magasin ou utiliser un mixin global mais je demande d'utiliser un prototype


3 Réponses :


1
votes

Je recommande d'utiliser l'approche provide/inject comme suit:

dans main.js:

export default{
 name:'some-compo',
 inject:['globalVariable'],
 //then access this.globalVariable as property in you component
...
}

dans un composant enfant ou petit-enfant:

let app=new Vue({
provide:{
globalVariable:123
}

}).$mount('#app')


0 commentaires

3
votes

Le remplacement le plus direct est app.config.globalProperties . Voir:

https://v3.vuejs.org/api/application-config.html#globalproperties

Donc:

const app = Vue.createApp({})

app.provide('myGlobalVariable', globalVariable)

// In the descendant component
export default {
  inject: ['myGlobalVariable']
}

devient:

const app = Vue.createApp({})
app.config.globalProperties.$myGlobalVariable = globalVariable

Notez que cela concerne une application particulière plutôt que d'être global comme c'était le cas avec Vue.prototype . C'est par conception, toutes les options de configuration globales sont désormais étendues à une application.

Le RFC pertinent est ici:

https://github.com/vuejs/rfcs/blob/master/active-rfcs/0009-global-api-change.md

Notez que provide / inject niveau de l'application (également abordé dans cette RFC) est également une alternative à l'utilisation de Vue.prototype :

Vue.prototype.$myGlobalVariable = globalVariable

Documents: https://v3.vuejs.org/api/application-api.html#provide

L'idée ici est que le composant peut déclarer explicitement la propriété plutôt que de l'hériter par magie. Cela évite les problèmes tels que les collisions de noms, il n'est donc pas nécessaire d'utiliser un préfixe $ . Cela peut également aider à préciser d'où vient exactement une propriété.

L'approche que vous préférez dépendra de votre situation.


0 commentaires

0
votes

Pour ceux d'entre vous qui ne globalProperties pas comment accéder à globalProperties dans la méthode setup() , vous pouvez utiliser getCurrentInstance() comme dans la documentation suivante.

https://v3.vuejs.org/api/composition-api.html#getcurrentinstance


0 commentaires