Vue3 Berechnete Eigenschaften
Berechnete Eigenschaften werden verwendet, um abgeleitete Eigenschaftswerte dynamisch basierend auf Änderungen in anderen Daten zu berechnen, und sie haben einen Caching-Mechanismus; sie werden nur neu berechnet, wenn sich zugehörige Abhängigkeiten ändern.
Schlüsselwort für berechnete Eigenschaft:computed。
Berechnete Eigenschaften sind sehr nützlich, wenn es um die Handhabung komplexer Logik geht.
Sie können sich das folgende Beispiel zum Umkehren einer Zeichenkette ansehen:
In Beispiel 1 wird das Template sehr komplex und ist nicht leicht zu lesen und zu verstehen.
Als Nächstes sehen wir uns ein Beispiel an, das berechnete Eigenschaften verwendet:
Beispiel 2
Ausprobieren »
In Beispiel 2 wird eine berechnete Eigenschaft `reversedMessage` deklariert.
Die bereitgestellte Funktion wird als Getter für die Eigenschaft `vm.reversedMessage` verwendet.
`vm.reversedMessage` hängt von `vm.message` ab. Wenn sich `vm.message` ändert, wird `vm.reversedMessage` ebenfalls aktualisiert.
Verwenden Sie die Funktion `computed`, um berechnete Eigenschaften zu definieren:
Beispiel
<div>
<p>Produktname:{{ productName }}</p>
<p>Produktpreis:{{ formattedPrice }}</p>
<button @click="increasePrice">Preis erhöhen</button>
</div>
</template>
<script>
import { reactive, computed } from 'vue';
export default {
setup() {
// reaktive Daten
const state = reactive({
name: 'Mobiltelefon',
price: 2000
});
// berechnete Eigenschaft
const productName = computed(() => {
return`Rabatt ${state.name}`;
});
const formattedPrice = computed(() => {
return `¥${state.price.toFixed(2)}`;
});
// Methode
const increasePrice = () => {
state.price += 100;
};
return {
productName,
formattedPrice,
increasePrice
};
}
};
</script>
Beschreibung
computedFunktion:
- In
setupWird in der Funktion verwendetcomputedVerwenden Sie eine Funktion, um berechnete Eigenschaften zu definieren. - Geben Sie den berechneten Wert durch eine Arrow-Funktion zurück, die automatisch die reaktiven Daten verfolgt, von denen sie abhängt (
stateim Objektnameundprice)。
Berechnete Eigenschaften verwenden:
productNameBerechnete Eigenschaften werden abgeleitet ausstate.name, wann immerstate.namewenn Änderungen auftreten,productNamewird es automatisch aktualisiert.formattedPriceBerechnete Eigenschaften werden abgeleitet ausstate.price, wann immerstate.pricewenn Änderungen auftreten,formattedPricewird es automatisch aktualisiert.
reaktive Daten:
- Verwenden Sie
reactiveFunktion erstelltstateObjekt, das es zu reaktiven Daten macht, sodass du Änderungen an seinen Eigenschaften überwachen kannst.
Methode:
increasePriceDie Methode wird verwendet, umstate.priceden Wert zu erhöhen, und jedes Mal, wenn auf die Schaltfläche geklickt wird,state.priceerhöht sich der Wert um 100, undformattedPricedie berechnete Eigenschaft wird entsprechend aktualisiert.
computed vs methods
Wir können `methods` verwenden, um `computed` zu ersetzen. Der Effekt ist bei beiden derselbe, aber `computed` wird anhand seiner Abhängigkeiten zwischengespeichert und nur neu berechnet, wenn sich die zugehörigen Abhängigkeiten ändern. Bei `methods` wird die Funktion bei jedem erneuten Rendern immer wieder aufgerufen und ausgeführt.
Beispiel 3
Ausprobieren »
Man kann sagen, dass die Verwendung von `computed` eine bessere Leistung bietet, aber wenn du keine Zwischenspeicherung möchtest, kannst du die Eigenschaft `methods` verwenden.
computed-Setter
Berechnete Eigenschaften haben standardmäßig nur einen Getter, aber bei Bedarf kannst du auch einen Setter angeben:
Beispiel 4
Ausprobieren »
Aus dem Ausführungsergebnis des Beispiels: Beim Ausführen vonvm.site = 'Example http://www.example.com';wennSetteraufgerufen wird,vm.nameundvm.urlwerden ebenfalls entsprechend aktualisiert.
