Komponenten sind eine der leistungsstärksten Funktionen von vue.js, und die Bereiche der Komponenteninstanzen sind unabhängig voneinander, was bedeutet, dass Daten zwischen verschiedenen Komponenten nicht aufeinander verweisen können. Die Übertragung von Daten ist ebenfalls zu einem wichtigen Wissenspunkt für Komponenten geworden.
Es gibt unterschiedliche Beziehungen zwischen Komponenten. Die Beziehung zwischen Vater und Sohn und Bruder (diejenigen, die nicht Vater und Sohn sind, werden vorübergehend Brüder genannt).
Originalautor: Lin ist die übergeordnete Komponente, Komponente B ist die Unterkomponente.
Bei direkter Verwendung der Vaterkomponente:// 注册一个子组件Vue.component('child', {data: function(){text: '我是father的子组件!'}template: '<span>{{ text }}</span>'})// 注册一个父组件Vue.component('father', {template: '<div><child></child></div>' // 在模板中使用了child组件})
<div id="app"><father></father></div>
Geschwisterkomponenten
Zwei Komponenten, die nicht aufeinander verweisen, sind Geschwisterkomponenten.
Bei Verwendung der Komponente:Vue.component('brother1', {template: '<div>我是大哥</div>'})Vue.component('brother2', {template: '<div>我是小弟</div>'})
<div id="app"><brother1></brother1><brother2></brother2></div>
Ich bin der kleine Bruder
Prop
Wenn eine untergeordnete Komponente die Daten der übergeordneten Komponente verwenden möchte, müssen wir die von der übergeordneten Komponente übergebenen Daten abrufen die props-Option der untergeordneten Komponente. Im Folgenden verwende ich das Format in der .vue-Datei, um das Beispiel zu schreiben.
Referenzieren Sie die untergeordnete Komponente child.vue in der übergeordneten Komponente Father.vue und übergeben Sie den Wert von name an die untergeordnete Komponente.
Deklarieren Sie die Daten, die erwartet werden, in der Option props in der untergeordneten Komponente child.vue<template><div class="app">// message 定义在子组件的 props 中<child :message="name"></child></div></template><script>import child from './child.vue';export default {components: {child},data() {return {name: 'linxin'}}}</script>
<template><span>Hello {{message}}</span></template><script>export default {// 在 props 中声明获取父组件的数据通过 message 传过来props: ['message']}</script>
Wenn sich der Name der übergeordneten Komponente ändert, aktualisiert die untergeordnete Komponente automatisch die Ansicht. Aber in untergeordneten Komponenten möchten wir Requisiten nicht ändern. Wenn Sie diese Daten ändern müssen, können Sie die folgende Methode verwenden:
export default {data(){newMessage: null },props: ['message'],created(){this.newMessage = this.message;}}
export default {props: ['message'],computed{newMessage(){return this.newMessage + ' 哈哈哈';}}}
Wenn Sie beispielsweise die Anzeige einer Popup-Unterkomponente in der übergeordneten Komponente steuern, weisen Sie die übergeordnete Komponente nach dem Klicken auf „Schließen“ in der Unterkomponente an, sie auszublenden, und die übergeordnete Komponente führt dann den Vorgang aus Vorgang zum Ausblenden des Popup-Fensters.
In der untergeordneten Komponente dialog.vue:<template><div class="app">// hide 为自定义事件,名字可以自己随便起,不能有大写字母,可以使用短横线 // @hide 监听子组件触发 hide 事件,则会执行 hideDialog 方法<dialog :is-show="show" @hide="hideDialog"></dialog><button @click="showDialog">显示弹框</button></div></template><script>import dialog from './dialog.vue';export default {components: { dialog },data() {return {show: false}},methods: {showDialog() {this.show = true;},hideDialog() {this.show = false;}}}</script>
<template><div class="dialog" v-show="isShow"><p>这里是弹框子组件</p><button @click="toHide">关闭弹框</button></div></template><script>export default {// 驼峰式命名的 prop 需要转换为相对应的短横线隔开式 is-showprops: ['isShow'],methods: {toHide(){// $emit 方法触发父组件的监听事件this.$emit('hide');}}}</script>
Die obigen Beispiele basieren alle auf den Komponenten der Eltern-Kind-Beziehung, aber für andere Beziehungsebenen ist die Implementierung umständlicher. Dann kann Vuex Ihnen besser dabei helfen, zwischen verschiedenen Komponenten in Echtzeit zu kommunizieren. Bezüglich Vuex können Sie sich meinen anderen Artikel ansehen: Vuex modularisiert die Statusverwaltung von To-Do-Elementen
Für einige einfache Datenübertragungen ist für die Komponentenkommunikation nicht unbedingt die Verwendung von Vuex erforderlich , Stütze kann auch abgeschlossen werden. In diesem Artikel werden hauptsächlich einige grundlegende Wissenspunkte zur Übergabe von Komponentenparametern aufgeführt. Für die tatsächliche Praxis können Sie sich auf Notepad als Beispiel beziehen. Verwenden Sie prop, um Unterkomponenten anzuzeigen und auszublenden, und verwenden Sie vuex, um die Datenstatusverwaltung zwischen Komponenten zu implementieren.
Das obige ist der detaillierte Inhalt vonSo übergeben Sie Daten zwischen vue.js-Komponenten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!