Berechnete Attribute
Wir wissen, dass einige Daten in den Daten direkt über die Interpolationssyntax in der Vorlage angezeigt werden können. In einigen Fällen müssen wir jedoch möglicherweise einige Transformationen an den Daten durchführen, bevor wir sie anzeigen, oder mehrere Daten kombinieren. Anzeige
Die Verwendung von Ausdrücken in Vorlagen kann sehr praktisch sein, sie sind jedoch ursprünglich für einfache Vorgänge konzipiert. Wenn Sie zu viel Logik in die Vorlage einfügen, wird die Vorlage überlastet und schwer zu warten Es wird viel doppelten Code geben
Wir hoffen also, die Geschäftslogik und die UI-Schnittstelle zu trennen. Eine Möglichkeit besteht darin, die Logik in eine Methode zu extrahieren, aber dieser Ansatz hat die folgenden Nachteile: Der gesamte Datennutzungsprozess wird durchgeführt Werden Sie ein Methodenaufruf
Um Daten mehrmals zu erhalten, müssen Sie die Methode mehrmals aufrufen, um die entsprechende Logik ohne Zwischenspeicherung auszuführen
-
Tatsächlich gilt
für jeden Antworttyp. Für komplexe Datenlogik Sie sollten berechnete Attribute verwenden
<div id="app"> <!-- 计算属性的使用和普通状态的使用方式是一致的 --> <h3 id="nbsp-fullname-nbsp">{{ fullname }}</h3> </div> <script> Vue.createApp({ data() { return { firstname: 'Klaus', lastname: 'Wang' } }, computed: { fullname() { return this.firstname + ' ' + this.lastname } } }).mount('#app')
Caching
Berechnete Attribute werden basierend auf ihren Abhängigkeiten zwischengespeichert. Wenn sich die Daten nicht ändern, müssen berechnete Attribute nicht neu berechnet werden
Aber Wenn sich die abhängigen Daten ändern, wird die berechnete Eigenschaft bei Verwendung trotzdem neu berechnet对于任何包含响应式数据的复杂逻辑,你都应该使用计算属性
<div id="app"> <!-- 计算属性的使用和普通状态的使用方式是一致的 --> <h3 id="nbsp-fullname-nbsp">{{ fullname }}</h3> <button @click="change">change</button> </div> <script> Vue.createApp({ data() { return { firstname: 'Klaus', lastname: 'Wang' } }, methods: { change() { this.fullname = 'Alex Li' } }, computed: { // 计算属性的完整写法 fullname: { get() { return this.firstname + ' ' + this.lastname }, set(v) { this.firstname = v.split(' ')[0] this.lastname = v.split(' ')[1] } } } }).mount('#app') </script>
缓存
计算属性会基于它们的依赖关系进行缓存,在数据不发生变化时,计算属性是不需要重新计算的
但是如果依赖的数据发生变化,在使用时,计算属性依然会重新进行计算
并且界面会使用最新的计算属性的值进行重新渲染
getter 和 setter
计算属性在大多数情况下,只需要一个getter方法即可,所以我们会将计算属性直接写成一个函数
Vue.createApp({ data() { return { info: { name: 'Klaus' } } }, watch: { // 可以使用watch监听响应式数据的改变 // 对应有两个参数 // 参数一 --- 新值 // 参数二 --- 旧值 info(newV, oldV) { // 如果监听的值是对象,获取到的新值和旧值是对应对象的代理对象 console.log(newV, oldV) // 代理对象 转 原生对象 // 1. 使用浅拷贝获取一个新的对象,获取的新的对象为原生对象 console.log({...newV}) // 2. 使用Vue.toRaw方法获取原生对象 console.log(Vue.toRaw(newV)) } }, methods: { change() { this.info = { name: 'Steven' } } } }).mount('#app')
侦听器
在data返回的对象中定义了数据,这个数据通过插值语法等方式绑定到template中,当数据变化时,template会自动进行更新来显示最新的数据
但是在某些情况下,我们希望在代码逻辑中监听某个数据的变化,这个时候就需要用侦听器watch来完成了
Vue.createApp({ data() { return { info: { name: 'Klaus' } } }, watch: { info: { // 开启了深度监听后,当info的属性发生改变的时候,就会触发对应的watch回调 // 注意: 和直接修改info引用不同的是,如果直接修改的是对象的属性 // 那么此时newV和oldV是同一个对象的引用, 此时也就获取不到对应的旧值 handler(newV, oldV) { console.log(newV, oldV) console.log(newV === oldV) // => true }, deep: true, immediate: true } }, methods: { change() { this.info.name = 'Steven' } } }).mount('#app')
配置选项
属性 | 说明 |
---|---|
deep | 是否开启深度监听 值为boolean 未开启的时候,如果监听的是对象,那么只有对象的引用发生改变的时候,才会触发watch回调 开始后,如果监听的是对象,那么只要对象中的任意一个属性发生了改变,就会触发watch回调 |
immediate | 是否立即开始监听 默认情况下,初次渲染是不会触发watch监听,只有当值发生改变后,才会触发watch监听 将immediate设置为true后,初次渲染也会触发watch监听,此时oldValue的值为undefined |
watch: { 'info.name'(newV, oldV){ console.log(newV, oldV) } }
其它写法
直接监听对象属性
Vue.createApp({ data() { return { info: { name: 'Klaus' } } }, watch: { // watch的值如果是一个字符串的时候 // 会自动以该字符串作为函数名去methods中查找对应的方法 'info.name': 'watchHandler' }, methods: { change() { this.info.name = 'Steven' }, watchHandler(newV, oldV){ console.log(newV, oldV) } } }).mount('#app')
字符串写法
Vue.createApp({ data() { return { info: { name: 'Klaus' } } }, watch: { 'info.name': [ 'watchHandler', function handle() { console.log('handler2') }, { handler() { console.log('handler3') } } ] }, methods: { change() { this.info.name = 'Steven' }, watchHandler(){ console.log('handler1') } } }).mount('#app')
数组写法
Vue.createApp({ data() { return { info: { name: 'Klaus' } } }, created() { /* $watch 参数列表 参数一 --- 侦听源 参数二 --- 侦听回调 参数三 --- 配置对象 */ this.$watch('info.name', (newV, oldV) => console.log(newV, oldV), { immediate: true }) }, methods: { change() { this.info.name = 'Steven' } } }).mount('#app')
$watch
Getter und Setter
🎜 In den meisten Fällen eine berechnete Eigenschaft Erfordert nur eine Getter-Methode, daher schreiben wir die berechnete Eigenschaft direkt als Funktion🎜rrreee🎜Der Listener🎜🎜 definiert die Daten im von data zurückgegebenen Objekt. Diese Daten werden durch Interpolationssyntax usw. übergeben. Die Methode ist an die Vorlage gebunden . Wenn sich die Daten ändern, wird die Vorlage automatisch aktualisiert, um die neuesten Daten anzuzeigen. In einigen Fällen möchten wir jedoch die Änderung bestimmter Daten in der Codelogik überwachen abgeschlossen🎜rrreeeKonfigurationsoptionen
Eigenschaften | Beschreibung |
---|---|
Gibt an, ob die Tiefenüberwachung aktiviert werden soll Der Wert ist boolesch Wenn es nicht aktiviert ist und das Objekt überwacht wird, ändert sich nur die Referenz des Objekts Der Überwachungsrückruf wird ausgelöst. Wenn das Objekt nach dem Start überwacht wird, wird der Überwachungsrückruf sofort ausgelöst, solange sich ein Attribut im Objekt ändert. |
|
Ob die Überwachung sofort gestartet werden soll Standardmäßig wird die Überwachungsüberwachung beim ersten Rendern nicht ausgelöst. Nur wenn sich der Wert ändert, wird die Überwachungsüberwachung ausgelöst Sofort festlegen true Anschließend löst das erste Rendering auch die Überwachung aus. Zu diesem Zeitpunkt ist der Wert von oldValue undefiniert |
Andere Schreibmethoden
🎜Objekteigenschaften direkt überwachen
🎜rrreee🎜String-Schreiben
🎜rrreee🎜Array-Schreiben
🎜rrreee🎜$watch
🎜rrreeeDas obige ist der detaillierte Inhalt vonSo verwenden Sie berechnete Eigenschaften und Listener in Vue3. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Vue.js und React haben jeweils eigene Vorteile: Vue.js ist für kleine Anwendungen und schnelle Entwicklung geeignet, während React für große Anwendungen und komplexes Staatsmanagement geeignet ist. 1.Vue.js realisiert automatisches Update über ein reaktionsschnelles System, das für kleine Anwendungen geeignet ist. 2.React verwendet virtuelle DOM- und Diff -Algorithmen, die für große und komplexe Anwendungen geeignet sind. Bei der Auswahl eines Frameworks müssen Sie Projektanforderungen und Teamtechnologie -Stack in Betracht ziehen.

Vue.js und React jeweils haben ihre eigenen Vorteile, und die Auswahl sollte auf Projektanforderungen und Teamtechnologie -Stack beruhen. 1. Vue.js ist gemeinschaftsfreundlich und bietet reichhaltige Lernressourcen an, und das Ökosystem umfasst offizielle Tools wie Vuerouter, die vom offiziellen Team und der Community unterstützt werden. 2. Die React -Community ist in Bezug auf Unternehmensanwendungen mit einem starken Ökosystem voreingenommen und unterstützt von Facebook und seiner Community und hat häufige Aktualisierungen.

Netflix verwendet React, um die Benutzererfahrung zu verbessern. 1) Die komponentierten Merkmale von React unterstützen die Netflix -Komplex -Benutzeroberfläche in überschaubare Module. 2) Virtual DOM optimiert UI -Updates und verbessert die Leistung. 3) Die Kombination von Redux und GraphQL verwaltet Netflix den Anwendungsstatus und den Datenfluss effizient.

Vue.js ist ein Front-End-Framework, und das Back-End-Framework wird verwendet, um die serverseitige Logik zu verarbeiten. 1) Vue.js konzentriert sich auf den Aufbau von Benutzeroberflächen und vereinfacht die Entwicklung durch komponentierte und reaktionsschnelle Datenbindung. 2) Back-End-Frameworks wie Express- und Django-HTTP-Anforderungen, Datenbankvorgänge und Geschäftslogik und auf dem Server ausgeführt.

Vue.js ist eng in den Front-End-Technologie-Stack integriert, um die Entwicklungseffizienz und die Benutzererfahrung zu verbessern. 1) Konstruktionstools: Integrieren Sie sich in Webpack und Rollup, um eine modulare Entwicklung zu erzielen. 2) Staatsmanagement: Integrieren Sie sich in Vuex, um den komplexen Anwendungsstatus zu verwalten. 3) Routing: Integrieren Sie sich in Vuerouter, um einseitige Anwendungsrouting zu realisieren. 4) CSS -Präprozessor: Unterstützt SASS und weniger, um die Stilentwicklungseffizienz zu verbessern.

Netflix wählte React, um seine Benutzeroberfläche zu erstellen, da die Komponentendesign und der virtuelle DOM -Mechanismus von React komplexe Schnittstellen und häufige Updates effizient verarbeiten können. 1) Komponentenbasiertes Design ermöglicht es Netflix, die Schnittstelle in überschaubare Widgets zu unterteilen und die Entwicklungseffizienz und Code-Wartbarkeit zu verbessern. 2) Der virtuelle DOM -Mechanismus sorgt für die Glätte und hohe Leistung der Netflix -Benutzeroberfläche durch Minimierung von DOM -Operationen.

Vue.js wird von Entwicklern geliebt, weil es einfach zu bedienen und mächtig ist. 1) Das reaktionsschnelle Datenbindungssystem aktualisiert die Ansicht automatisch. 2) Das Komponentensystem verbessert die Wiederverwendbarkeit und Wartbarkeit des Codes. 3) Computereigenschaften und Hörer verbessern die Lesbarkeit und Leistung des Codes. 4) Die Verwendung von Vodevtools und Überprüfung auf Konsolenfehler sind häufige Debugging -Techniken. 5) Die Leistungsoptimierung umfasst die Verwendung von Schlüsselattributen, berechneten Attributen und Keep-Alive-Komponenten. 6) Zu den Best Practices zählen eindeutige Komponentenbenennungen, die Verwendung von Einzeldateikomponenten und die rationale Verwendung von Lebenszyklushaken.

VUE.JS ist ein progressives JavaScript-Framework, das zum Aufbau effizienter und wartbarer Front-End-Anwendungen geeignet ist. Zu den wichtigsten Merkmalen gehören: 1. Responsive Datenbindung, 2. Komponentenentwicklung, 3. Virtual DOM. Durch diese Funktionen vereinfacht Vue.js den Entwicklungsprozess, verbessert die Anwendungsleistung und -wartbarkeit und macht ihn in der modernen Webentwicklung sehr beliebt.


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

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft
