- Gilt nur für die Werteübertragung zwischen übergeordneten und untergeordneten Komponenten auf benachbarten Ebenen.
- Obwohl Requisiten auch zum Übertragen von Werten für mehrstufige Komponenten verwendet werden können, erschwert dies die Wartung des Codes und wird dringend nicht empfohlen .
- eventBus: Der Status ist ähnlich wie bei vuex. Es ist für jede Komponente geeignet und äußerst tolerant.
Probleme:
- Unbequem zu warten Wird im Projekt zu häufig verwendet, können Konflikte mit Methodennamen zu Ausnahmen führen und die Fehlerbehebung ist umständlicher. Beispiel:
rrreeerrreeerrreeerrreee
$attrs / $listeners🎜🎜🎜$attrs🎜🎜🎜Offizielle Erklärung🎜: 🎜🎜 von der übergeordneten Komponente an benutzerdefinierte untergeordnete Komponentenattribute übergeben, Wenn kein
prop
empfangen wird, wird es automatisch auf das äußerste Tag innerhalb der Unterkomponente gesetzt. Wenn es sich umclass
undstyle
handelt, ist dies der Fall zusammengeführt. Die äußersten Tags sindclass
undstyle
. 🎜🎜Wenn die untergeordnete Komponente die von der übergeordneten Komponente übergebenen Nicht-prop
-Attribute nicht erben möchte, können SieinheritAttrs
verwenden, um die Vererbung zu deaktivieren, und dannv-bind="$attrs"
Setzt die extern übergebenen Nicht-prop
-Attribute auf das gewünschte Tag, aber dadurch werdenclass
undstyle
🎜🎜 🎜🎜Wenn die übergeordnete Komponente Werte an die untergeordnete Komponente übergibt, die untergeordnete Komponente jedoch nicht alle übergebenen Werte in Requisiten deklariert, können Sie in der untergeordneten Komponente < verwenden code>$attrs zum Proxy, um alle übergeordneten Komponenten zu erhalten Der übergebene Wert. 🎜🎜Beispiel: Dies ist die übergeordnete Komponente🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜Dies ist die untergeordnete Komponente: Keine Requisiten deklariert🎜🎜🎜🎜🎜🎜🎜Dies ist die Dom-Anzeige:🎜 🎜🎜🎜 🎜- 此时,通过dom可以发现,所有没有声明的信息,全部出现在了子组件的根元素上。
- 如果要让没有声明的信息不出现在子组件的根元素上,那就在子组件与data同级的位置加个属性:inheritAttrs: false;这样就不会未通过props接收的变量就不会出现在子组件的根元素上了
- 至于怎么传递给子组件的子组件的子组件的子组件....等,那就需要给子组件的子组件依次都绑定:v-bind="$attrs"即可。
- 注意这样只适用于传递数据。
- $listeners
- 官方解释:包含了父作用域中的 (不含
.native
修饰器的)v-on
事件监听器。它可以通过v-on="$listeners"
传入内部组件——在创建更高层次的组件时非常有用 - 当父组件向子组件传递回调时,子组件可以通过$listeners代理所有回调。
示例:这是父组件
- 官方解释:包含了父作用域中的 (不含
这是子组件
这是执行展示:
同时可以发现子组件加上inheritAttrs:false之后根组件里的未声明props接受的变量消失了
- 最后:建议最好不要用这个玩意,虽然他们都可以相对便捷的将第一级组件的属性,方法回调传递给N级子组件中的任一级,但是之后进行bug定位,或者分析需求将会是一个比较大的挑战。
不同窗口(同浏览器不同页签内)
同浏览器的不同页签之间的通讯,大多数的场景是:项目里的增删改查都是打开的新页面,然后新增结束后就触发列表页重新获取列表。这种场景下有什么方法呢?
监听stroage事件" >props: Gilt für die Wertübertragung zwischen zwei benachbarten Komponenten (parent->child); $emit: child-> parent
Ernsthafte Requisiten/$emit sind zu häufig und werden alle überbeansprucht, sodass kein Beispielcode geschrieben werden muss.
- Gilt nur für die Werteübertragung zwischen übergeordneten und untergeordneten Komponenten auf benachbarten Ebenen.
- Obwohl Requisiten auch zum Übertragen von Werten für mehrstufige Komponenten verwendet werden können, erschwert dies die Wartung des Codes und wird dringend nicht empfohlen .
- eventBus: Der Status ist ähnlich wie bei vuex. Es ist für jede Komponente geeignet und äußerst tolerant.
Probleme:
- Unbequem zu warten Wird im Projekt zu häufig verwendet, können Konflikte mit Methodennamen zu Ausnahmen führen und die Fehlerbehebung ist umständlicher. Beispiel:
rrreeerrreeerrreeerrreee
$attrs / $listeners🎜🎜🎜$attrs🎜🎜🎜Offizielle Erklärung🎜: 🎜🎜 von der übergeordneten Komponente an benutzerdefinierte untergeordnete Komponentenattribute übergeben, Wenn kein
prop
empfangen wird, wird es automatisch auf das äußerste Tag innerhalb der Unterkomponente gesetzt. Wenn es sich umclass
undstyle
handelt, ist dies der Fall zusammengeführt. Die äußersten Tags sindclass
undstyle
. 🎜🎜Wenn die untergeordnete Komponente die von der übergeordneten Komponente übergebenen Nicht-prop
-Attribute nicht erben möchte, können SieinheritAttrs
verwenden, um die Vererbung zu deaktivieren, und dannv-bind="$attrs"
Setzt die extern übergebenen Nicht-prop
-Attribute auf das gewünschte Tag, aber dadurch werdenclass
undstyle
🎜🎜 🎜🎜Wenn die übergeordnete Komponente Werte an die untergeordnete Komponente übergibt, die untergeordnete Komponente jedoch nicht alle übergebenen Werte in Requisiten deklariert, können Sie in der untergeordneten Komponente < verwenden code>$attrs zum Proxy, um alle übergeordneten Komponenten zu erhalten Der übergebene Wert. 🎜🎜Beispiel: Dies ist die übergeordnete Komponente🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜Dies ist die untergeordnete Komponente: Keine Requisiten deklariert🎜🎜🎜🎜🎜🎜🎜Dies ist die Dom-Anzeige:🎜 🎜🎜🎜 🎜- 此时,通过dom可以发现,所有没有声明的信息,全部出现在了子组件的根元素上。
- 如果要让没有声明的信息不出现在子组件的根元素上,那就在子组件与data同级的位置加个属性:inheritAttrs: false;这样就不会未通过props接收的变量就不会出现在子组件的根元素上了
- 至于怎么传递给子组件的子组件的子组件的子组件....等,那就需要给子组件的子组件依次都绑定:v-bind="$attrs"即可。
- 注意这样只适用于传递数据。
- $listeners
- 官方解释:包含了父作用域中的 (不含
.native
修饰器的)v-on
事件监听器。它可以通过v-on="$listeners"
传入内部组件——在创建更高层次的组件时非常有用 - 当父组件向子组件传递回调时,子组件可以通过$listeners代理所有回调。
示例:这是父组件
- 官方解释:包含了父作用域中的 (不含
这是子组件
这是执行展示:
同时可以发现子组件加上inheritAttrs:false之后根组件里的未声明props接受的变量消失了
- 最后:建议最好不要用这个玩意,虽然他们都可以相对便捷的将第一级组件的属性,方法回调传递给N级子组件中的任一级,但是之后进行bug定位,或者分析需求将会是一个比较大的挑战。
不同窗口(同浏览器不同页签内)
同浏览器的不同页签之间的通讯,大多数的场景是:项目里的增删改查都是打开的新页面,然后新增结束后就触发列表页重新获取列表。这种场景下有什么方法呢?
监听stroage事件
Wie kommuniziert man in verschiedenen Situationen in Vue? Art zu teilen
Wie kommuniziert man in Vue in verschiedenen Situationen? Im folgenden Artikel werden die Kommunikationsmethoden in vue unter verschiedenen Umständen analysiert. Ich hoffe, dass er für alle hilfreich ist!
Tatsächlich kennt jeder die Komponentenkommunikation in Vue. Auch wenn man den Mund aufmacht, schließlich wird das in Vorstellungsgesprächen oft gefragt. Da ich vorher nicht sorgfältig darüber nachgedacht hatte, stieß ich beim Schreiben eines kleinen Projekts auf die Notwendigkeit einer Kommunikation in Komponenten, und dann begann ich, es zu schreiben. Nach langem Nachprüfen wurde mir klar dass diese Methode für diese Situation nicht geeignet sei. Nach diesem Vorfall habe ich beschlossen, einen Artikel zu schreiben, um Kommunikationsmethoden klarer und sorgfältiger zu klassifizieren. Schließlich ist nicht jede Kommunikationsmethode für alle Szenarien geeignet. (Teilen von Lernvideos: vuejs-Tutorial)
Im selben Fenster (d. h. im selben Tab desselben Browsers)
Die Hauptsache im selben Tab desselben Browsers ist die Wertübertragung von Eltern-Kind-Komponenten.
vuex: State Manager: Anwendbar auf jede Komponente in einem Projekt, äußerst inklusiv
Jeder sollte mit dem Konzept eines State Managers vertraut sein.
- Mehrere Komponenten können einen oder mehrere Zustandswerte gemeinsam nutzen. Unabhängig davon, wie tief die Komponentenhierarchie ist, kann normal darauf zugegriffen werden. Es handelt sich also um eine offiziell direkt unterstützte Kommunikationsmethode.
- Hinweis: Für kleine einseitige Anwendungen ist diese Option nicht sehr zu empfehlen Bei kleinen Projekten wird die Verwendung von vuex umständlicher, genau wie eine 75-Pfund-150-cm-Person, die eine 170-cm-110-Person trägt Person, sie sehen sehr ausgebeult aus und können nicht hochgehalten werden.
provide / inject (geschrieben basierend auf v2.2.1 und höher): Anwendbar auf N-Level-Komponenten, muss aber vom Typ der einzeiligen Vererbung sein
Dieses Optionspaar muss zusammen verwendet werden, um eine zu ermöglichen Vorfahrenkomponente für alle ihre Nachkommen. Nachkommen fügen eine Abhängigkeit ein, egal wie tief die Komponentenhierarchie ist, und sie wird immer wirksam, solange ihre Upstream- und Downstream-Beziehungen hergestellt sind.
- Es entspricht einem Gebäude mit N Stockwerken. Die oberste Ebene ist die übergeordnete Komponente. Zwischen jedem Stockwerk ist ein gemeinsames Rohr vorgesehen. Das Rohr hat auf jeder Etage einen Auslass mit der Bezeichnung: inject
- Hinweis:
provide
- undinject
-Bindungen reagieren nicht. Wenn Sie jedoch ein abhörbares Objekt übergeben, reagieren die Eigenschaften des Objekts weiterhin.provide
和inject
绑定并不是可响应的。不过如果你传入了一个可监听的对象,那么其对象的 property 还是可响应的。 - 让咱们来看看代码
// parent.vue // 此处忽略template模板的东西 <script> export default { name: 'parent', // provide有两种写法 // 第一种 provide: { a: 1, b: 2 } // 第二种 provide() { return { a: 1, b: 2 } } } </script>
// child.vue // 此处忽略template模板的东西 <script> export default { name: 'child', // inject // 第一种 inject: [ 'a', 'b' ] // 第二种 inject: { abc: { // 可以指定任意不与data,props冲突的变量名,然后指定是指向provide中的哪个变量 from: 'a', default: 'sfd' // 如果默认值不是基本数据类型,那就得改用:default: () => {a:1,b:2} }, b: { default: '33' } } } </script>
props:适用相邻两组件的传值(父->子);$emit: 子 -> 父
正经的props/$emit可太常见了,都是用烂了的,就不用写示例代码了吧。
- 只适用于相邻级别的父子组件之间传值
- 对于多级组件的传值虽然也能用props传,但是吧,这样的话会让代码很难维护,极其不推荐。
eventBus: 地位与vuex差不多,适用任意组件,包容性极强
问题:
- 不方便维护:如果在项目里用的多了,可能出现方法名冲突导致异常的问题,而且比较不方便排查。
- 示例:
// utils/eventBus.js import Vue from 'vue' const EventBus = new Vue() export default EventBus
// main.js // 进行全局挂载 import eventBus from '@/utils/eventBus' Vue.prototype.$eventBos = eventBus
// views/parent.vue <template> <div> <button @click="test">测试</button> </div> </template> <script> export default { data() { return {} }, methods: { test() { this.$eventBus.$emit('testBus', 'test') } } }
// views/child.vue <template> <div> {{ testContent }} <!-- test --> </div> </template> <script> export default { data() { return { testContent: '' } }, mounted() { this.$eventBus.$on('test', e => this.testContent = e) } }
$attrs / $listeners
- $attrs
- 官方解释:
- 从父组件传给自定义子组件的属性,如果没有
prop
接收会自动设置到子组件内部的最外层标签上,如果是class
和style
的话,会合并最外层标签的class
和style
。 - 如果子组件中不想继承父组件传入的非
prop
属性,可以使用inheritAttrs
禁用继承,然后通过v-bind="$attrs"
把外部传入的 非prop
属性设置给希望的标签上,但是这不会改变class
和style
- 从父组件传给自定义子组件的属性,如果没有
- 当父组件向子组件传值,但是子组件并没有全部将传过来的值在props中声明时,在子组件里就可以通过
$attrs
Werfen wir einen Blick auf den Code
rrreee// 需要监听的页面 mounted() { window.addEventListener('storage', this.storageEvent); }, beforeDestroy() { window.removeEventListener() } methods: { storageEvent(e) { console.log("storage值发生变化后触发:", e) } }
Nach dem Login kopierenNach dem Login kopieren - 官方解释:
Ernsthafte Requisiten/$emit sind zu häufig und werden alle überbeansprucht, sodass kein Beispielcode geschrieben werden muss.
- Gilt nur für die Werteübertragung zwischen übergeordneten und untergeordneten Komponenten auf benachbarten Ebenen.
- Obwohl Requisiten auch zum Übertragen von Werten für mehrstufige Komponenten verwendet werden können, erschwert dies die Wartung des Codes und wird dringend nicht empfohlen .
- eventBus: Der Status ist ähnlich wie bei vuex. Es ist für jede Komponente geeignet und äußerst tolerant.
Probleme:
- Unbequem zu warten Wird im Projekt zu häufig verwendet, können Konflikte mit Methodennamen zu Ausnahmen führen und die Fehlerbehebung ist umständlicher. Beispiel:
rrreeerrreeerrreeerrreee
$attrs / $listeners🎜🎜🎜$attrs🎜🎜🎜Offizielle Erklärung🎜: 🎜🎜 von der übergeordneten Komponente an benutzerdefinierte untergeordnete Komponentenattribute übergeben, Wenn kein
prop
empfangen wird, wird es automatisch auf das äußerste Tag innerhalb der Unterkomponente gesetzt. Wenn es sich umclass
undstyle
handelt, ist dies der Fall zusammengeführt. Die äußersten Tags sindclass
undstyle
. 🎜🎜Wenn die untergeordnete Komponente die von der übergeordneten Komponente übergebenen Nicht-prop
-Attribute nicht erben möchte, können SieinheritAttrs
verwenden, um die Vererbung zu deaktivieren, und dannv-bind="$attrs"
Setzt die extern übergebenen Nicht-prop
-Attribute auf das gewünschte Tag, aber dadurch werdenclass
undstyle
🎜🎜 🎜🎜Wenn die übergeordnete Komponente Werte an die untergeordnete Komponente übergibt, die untergeordnete Komponente jedoch nicht alle übergebenen Werte in Requisiten deklariert, können Sie in der untergeordneten Komponente < verwenden code>$attrs zum Proxy, um alle übergeordneten Komponenten zu erhalten Der übergebene Wert. 🎜🎜Beispiel: Dies ist die übergeordnete Komponente🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜Dies ist die untergeordnete Komponente: Keine Requisiten deklariert🎜🎜🎜🎜🎜🎜🎜Dies ist die Dom-Anzeige:🎜 🎜🎜🎜 🎜- 此时,通过dom可以发现,所有没有声明的信息,全部出现在了子组件的根元素上。
- 如果要让没有声明的信息不出现在子组件的根元素上,那就在子组件与data同级的位置加个属性:inheritAttrs: false;这样就不会未通过props接收的变量就不会出现在子组件的根元素上了
- 至于怎么传递给子组件的子组件的子组件的子组件....等,那就需要给子组件的子组件依次都绑定:v-bind="$attrs"即可。
- 注意这样只适用于传递数据。
- $listeners
- 官方解释:包含了父作用域中的 (不含
.native
修饰器的)v-on
事件监听器。它可以通过v-on="$listeners"
传入内部组件——在创建更高层次的组件时非常有用 - 当父组件向子组件传递回调时,子组件可以通过$listeners代理所有回调。
示例:这是父组件
- 官方解释:包含了父作用域中的 (不含
这是子组件
这是执行展示:
同时可以发现子组件加上inheritAttrs:false之后根组件里的未声明props接受的变量消失了
- 最后:建议最好不要用这个玩意,虽然他们都可以相对便捷的将第一级组件的属性,方法回调传递给N级子组件中的任一级,但是之后进行bug定位,或者分析需求将会是一个比较大的挑战。
不同窗口(同浏览器不同页签内)
同浏览器的不同页签之间的通讯,大多数的场景是:项目里的增删改查都是打开的新页面,然后新增结束后就触发列表页重新获取列表。这种场景下有什么方法呢?
监听stroage事件
// 需要监听的页面 mounted() { window.addEventListener('storage', this.storageEvent); }, beforeDestroy() { window.removeEventListener() } methods: { storageEvent(e) { console.log("storage值发生变化后触发:", e) } }
- 切记:第一条:要记得将监听的事件在组件销毁之前解除监听。否则会给你惊”喜“
- 切记:第二条:其中监听方法回调一定要在methods中定义,然后通过this进行引用,否则你在解除事件监听的时候将无效。
不同浏览器
不同浏览器的同一网站的有通讯的必要吗?
如果有那就:websocket(比如聊天室)
哈哈哈哈
Das obige ist der detaillierte Inhalt vonWie kommuniziert man in verschiedenen Situationen in Vue? Art zu teilen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Sie können der VUE -Taste eine Funktion hinzufügen, indem Sie die Taste in der HTML -Vorlage an eine Methode binden. Definieren Sie die Methode und schreiben Sie die Funktionslogik in der VUE -Instanz.

Die Verwendung von Bootstrap in Vue.js ist in fünf Schritte unterteilt: Startstrap installieren. Bootstrap in main.js. Verwenden Sie die Bootstrap -Komponente direkt in der Vorlage. Optional: benutzerdefinierter Stil. Optional: Verwenden Sie Plug-Ins.

Es gibt drei Möglichkeiten, sich auf JS -Dateien in Vue.js zu beziehen: Geben Sie den Pfad direkt mit dem & lt; Skript & gt an. Etikett;; Dynamischer Import mit dem montierten () Lebenszyklushaken; und importieren über die Vuex State Management Library.

Mit der Watch -Option in Vue.js können Entwickler auf Änderungen in bestimmten Daten anhören. Wenn sich die Daten ändert, löst sich eine Rückruffunktion aus, um Aktualisierungsansichten oder andere Aufgaben auszuführen. Zu den Konfigurationsoptionen gehören unmittelbar, die festlegen, ob ein Rückruf sofort ausgeführt werden soll, und Deep, das feststellt, ob Änderungen an Objekten oder Arrays rekursiv anhören sollen.

VUE.JS hat vier Methoden, um zur vorherigen Seite zurückzukehren: $ router.go (-1) $ router.back () verwendet & lt; Router-Link to = & quot;/& quot; Komponentenfenster.history.back () und die Methodenauswahl hängt von der Szene ab.

Implementieren Sie Marquee/Text-Scrolling-Effekte in VUE unter Verwendung von CSS-Animationen oder Bibliotheken von Drittanbietern. In diesem Artikel wird die Verwendung von CSS -Animation vorgestellt: Bildlauftext erstellen und Text mit & lt; div & gt;. Definieren Sie CSS -Animationen und setzen Sie Überlauf: Versteckt, Breite und Animation. Definieren Sie Keyframes, setzen Sie Transformation: Translatex () am Anfang und am Ende der Animation. Passen Sie die Animationseigenschaften wie Dauer, Bildlaufgeschwindigkeit und Richtung an.

Pagination ist eine Technologie, die große Datensätze in kleine Seiten aufteilt, um die Leistung und die Benutzererfahrung zu verbessern. In VUE können Sie die folgende integrierte Methode zum Paging verwenden: Berechnen Sie die Gesamtzahl der Seiten: TotalPages () TRAVERSAL-Seitennummer: V-für Anweisung, um die aktuelle Seite festzulegen: aktuelle Seite

Funktionsabfangen in VUE ist eine Technik, mit der die Häufigkeit, mit der eine Funktion eingerufen wird, innerhalb eines bestimmten Zeitraums aufgerufen wird und Leistungsprobleme verhindern. Die Implementierungsmethode lautet: Importieren Sie die Lodash -Bibliothek: importieren {dunounce} aus 'lodash'; Verwenden Sie die Dabounce -Funktion, um eine Intercept -Funktion zu erstellen: const dabouncedFunction = dunounce (() = & gt; { / logical /}, 500); Rufen Sie die Abfangfunktion auf und die Steuerfunktion wird höchstens einmal in 500 Millisekunden aufgerufen.
