Vue aktualisiert berechnete Eigenschaften nur, wenn sich das Ergebnis ändert
<p>Betrachten Sie die folgende Vereinfachung des Problems, auf das ich gestoßen bin: </p>
<pre class="brush:js;toolbar:false;">export default {
Daten () {
zurückkehren {
i_change_alot: 0,
};
},
mount() {
setInterval(() => {
this.i_change_alot = Math.random();
}, 10);
},
berechnet: {
someComputedValue() {
this.i_change_alot;
gib 'a' zurück;
}
}
}
</pre>
<p>Ich habe ein Attribut <code>i_change_alot</code> erstellt, das sich alle 10 Millisekunden in einen zufälligen Wert ändert. Dies bedeutet, dass die Eigenschaft extrem reaktiv wird und daher die berechnete Eigenschaft auslöst. </p>
<p>Ich löse eine Abhängigkeit aus (zum Beispiel), indem ich einfach <code>this.i_change_alot</code> aufrufe, aber das <em>result</em> ändert sich nie. </p>
<p>Das Endergebnis ist, dass die berechnete Eigenschaft <code>someCompulatedValue</code> alle 10 Millisekunden aktualisiert wird, was meines Wissens ein erneutes Rendern der Ansicht auslöst. </p>
<p>Wie kann ich <code>someCompulatedValue</code> nur dann neu rendern, wenn sich <em>value/result</em> </p>
<p>(Bei der ursprünglichen Frage ging es um die Anzeige reaktiver relativer Datumsangaben, z. B. „vor 1 Sekunde“, „vor 2 Sekunden“ usw. <code>vor 31 Minuten</code> Dies bedeutet, dass sich die Zeichenfolgendarstellung eine ganze Minute lang nicht geändert hat, aber aufgrund der Abhängigkeit vom Datumsattribut immer noch alle 10 Millisekunden neu gerendert wird. </p>
<p>Laut https://github.com/vuejs/vue/issues/11399 kann ich eine Struktur mit einem Beobachter erstellen, aber es sieht nicht intuitiv aus. </p>