Heim > Web-Frontend > View.js > Verwenden Sie Provide und Inject in Vue, um die Datenübertragung und Leistungsoptimierung zwischen Komponenten zu implementieren

Verwenden Sie Provide und Inject in Vue, um die Datenübertragung und Leistungsoptimierung zwischen Komponenten zu implementieren

WBOY
Freigeben: 2023-07-17 19:19:37
Original
1777 Leute haben es durchsucht

Vue verwendet Provide und Inject, um die Datenübertragung und Leistungsoptimierung zwischen Komponenten zu erreichen.

In Vue ist die Datenübertragung zwischen Komponenten eine sehr häufige Anforderung. Manchmal möchten wir Daten an einem Knoten im Komponentenbaum bereitstellen und die Daten dann in seinen Nachkommenkomponenten verwenden. In diesem Fall können wir Vues Bereitstellung und Injektion verwenden, um dies zu erreichen. Zusätzlich zur Datenübertragung können Bereitstellung und Injektion auch zur Leistungsoptimierung verwendet werden, wodurch der Umfang der Requisitenübertragung reduziert und die Komponentenleistung verbessert wird.

Provide und Inject sind erweiterte Funktionen von Vue, die Daten in Komponenteninstanzen injizieren und sie so im gesamten Komponentenbaum verfügbar machen können. Die Verwendung ist sehr einfach. Schauen wir uns zunächst ein Beispiel an:

// 父组件
export default {
  provide: {
    message: 'Hello from parent'
  }
}

// 子组件
export default {
  inject: ['message'],
  mounted() {
    console.log(this.message); // 输出:Hello from parent
  }
}
Nach dem Login kopieren

In der übergeordneten Komponente stellen wir Nachrichtendaten über die Bereitstellungsoption bereit und fügen diese Daten dann über die Injektionsoption in der untergeordneten Komponente ein. Auf die von der übergeordneten Komponente bereitgestellten Daten kann über this.message in der untergeordneten Komponente zugegriffen werden.

Zusätzlich zur Bereitstellung einzelner Daten können wir auch ein Objekt bereitstellen, das mehrere Daten enthält. In der Bereitstellungsoption können wir eine Funktion verwenden, um ein Objekt zurückzugeben, sodass Daten dynamisch bereitgestellt werden können.

// 父组件
export default {
  provide() {
    return {
      message: 'Hello from parent',
      count: 1
    }
  }
}
Nach dem Login kopieren

Injizieren Sie dieses Objekt in der untergeordneten Komponente über die Injektionsoption, und Sie können direkt auf die darin enthaltenen Daten zugreifen.

// 子组件
export default {
  inject: ['message', 'count'],
  mounted() {
    console.log(this.message); // 输出:Hello from parent
    console.log(this.count);   // 输出:1
  }
}
Nach dem Login kopieren

Einer der Vorteile der Verwendung von Provide und Inject besteht darin, dass die Datenübertragung zwischen Komponenten präziser ist und die Requisitenhierarchie reduziert. Insbesondere bei der Weitergabe von Daten über Ebenenkomponenten hinweg erscheint die Props-Methode sehr umständlich. Die Verwendung von Provide und Inject kann die Coderedundanz reduzieren und die Entwicklungseffizienz verbessern.

Ein weiterer Vorteil ist die verbesserte Komponentenleistung. Wenn Requisiten für die Datenübertragung verwendet werden, muss jede Komponentenschicht Requisiten zum Übertragen von Daten verwenden. Requisiten sind unidirektional und können nur von Komponenten der oberen Ebene auf Komponenten der unteren Ebene übertragen werden. Durch die Verwendung von Provide und Inject können die Zwischenkomponenten übersprungen und die Daten direkt an die erforderlichen Komponenten übergeben werden.

Das folgende Beispiel kann dieses Problem besser veranschaulichen:

// 父组件
export default {
  data() {
    return {
      count: 1
    }
  },
  provide() {
    return {
      message: 'Hello from parent',
      getCount: () => this.count
    }
  }
}

// 子组件A
export default {
  inject: ['message', 'getCount'],
  mounted() {
    console.log(this.message);   // 输出:Hello from parent
    console.log(this.getCount()); // 输出:1
  }
}

// 子组件B
export default {
  inject: ['message', 'getCount'],
  mounted() {
    console.log(this.message);   // 输出:Hello from parent
    console.log(this.getCount()); // 输出:1
  }
}

// 子组件C
export default {
  inject: ['message', 'getCount'],
  mounted() {
    console.log(this.message);   // 输出:Hello from parent
    console.log(this.getCount()); // 输出:1
  }
}
Nach dem Login kopieren

In diesem Beispiel stellt die übergeordnete Komponente Daten und eine Methode bereit, die dann über die Bereitstellungsoption in Unterkomponente A, Unterkomponente B und Unterkomponente C eingefügt werden. Wir können sehen, dass unabhängig von der Ebene der untergeordneten Komponente direkt auf die Daten und Methoden der übergeordneten Komponente zugegriffen werden kann.

Zusammenfassend lässt sich sagen, dass Provide und Inject von Vue eine sehr praktische Möglichkeit sind, Daten zwischen Komponenten zu übertragen, was nicht nur den Code vereinfacht, sondern auch die Leistung verbessert. Es ist jedoch zu beachten, dass Provide und Inject nicht reagierende Funktionen sind. Das heißt, wenn sich die von Provide bereitgestellten Daten ändern, wird das erneute Rendern der Unterkomponente nicht ausgelöst. Daher müssen Sie bei der Verwendung von Provide und Inject auf Probleme bei der Datenaktualisierung achten.

Das Obige ist eine Einführung in die Verwendung von Provide und Inject in Vue, um die Datenübertragung und Leistungsoptimierung zwischen Komponenten zu erreichen. Ich hoffe, es wird Ihnen hilfreich sein.

Das obige ist der detaillierte Inhalt vonVerwenden Sie Provide und Inject in Vue, um die Datenübertragung und Leistungsoptimierung zwischen Komponenten zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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