Heim > Web-Frontend > View.js > Hauptteil

So definieren Sie globale Variablen in vue3

PHPz
Freigeben: 2023-05-12 16:40:14
nach vorne
7693 Leute haben es durchsucht

vue3 definiert globale Variablen

In vue2 wissen wir, dass vue2.x Vue.prototype.$xxxx=xxx verwendet, um globale Variablen zu definieren, und dann globale Variablen dadurch erhält.$xxx .

Aber in vue3 funktioniert diese Methode offensichtlich nicht. Da wir dies nicht in vue3 einrichten können, verwenden wir gemäß der offiziellen Dokumentation die folgende Methode, um globale Variablen zu definieren:

Schreiben Sie zunächst eine globale Variable, die wir beispielsweise in main.js definieren möchten , eine System-ID

app.config.globalProperties.$systemId = "10"
Nach dem Login kopieren

Jetzt müssen Sie diese Variable auf der Seite verwenden. Sie müssen nur getCurrentInstance von vue einführen.

import { getCurrentInstance } from "vue";
const systemId = getCurrentInstance()?.appContext.config.globalProperties.$systemId
console.log(systemId);//控制台可以看到输出了10
Nach dem Login kopieren
#🎜 🎜# Verwendung globaler vue3-Variablen app.config.globalProperties

globalProperties

  • Typ: [Schlüssel: Zeichenfolge]: beliebig

    #🎜 🎜#

  • Standard: undefiniert
  • Verwendung
  • Eins hinzufügen in Eine globale Eigenschaft, auf die von jeder Komponenteninstanz der Anwendung aus zugegriffen werden kann. Komponenteneigenschaften haben bei Namenskonflikten Vorrang.

Dies kann die Vue.prototype-Erweiterung von Vue 2.x ersetzen:

// 之前(Vue 2.x)
Vue.prototype.$http = () => {}
 
// 之后(Vue 3.x)
const app = Vue.createApp({})
app.config.globalProperties.$http = () => {}
Nach dem Login kopieren

Wenn wir http innerhalb der Komponente aufrufen möchten, müssen wir getCurrentInstance() verwenden, um es abzurufen .

import { getCurrentInstance, onMounted } from "vue";
export default {
  setup( ) {
    const { ctx } = getCurrentInstance(); //获取上下文实例,ctx=vue2的this
    onMounted(() => {
      console.log(ctx, "ctx");
      ctx.http();
    });
  },
};
Nach dem Login kopieren

getCurrentInstance repräsentiert den Kontext, also die aktuelle Instanz. ctx entspricht diesem von Vue2, es ist jedoch wichtig zu beachten, dass ctx nur für die Entwicklungsphase geeignet ist. Wenn das Projekt gepackt und auf dem Produktionsserver ausgeführt wird, kann ctx kein Routing und kein Global erhalten Montage von Objekten. Die Lösung für dieses Problem besteht darin, Proxy anstelle von CTX zu verwenden. Die Codereferenz lautet wie folgt.

import { getCurrentInstance } from 'vue'
export default ({
  name: '',
  setup(){
    const { proxy } = getCurrentInstance() // 使用proxy代替ctx,因为ctx只在开发环境有效
    onMounted(() => {
      console.log(proxy, "proxy");
      proxy.http();
    });
  }
})
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo definieren Sie globale Variablen in vue3. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage