Wie lege ich nicht reagierende Daten für Komponenteninstanzen in Vue 3 fest?
P粉973899567
2023-08-25 23:08:24
<p>Bei Vue2 gibt es ein ähnliches Problem. Es wird empfohlen, <code>$options</code> zu verwenden. </p>
<p>Aber es scheint für Vue 3 nicht zu funktionieren. </p>
<p>Zunächst einmal heißt es in der Vue 3-Dokumentation, dass <code>$options</code> schreibgeschützt ist. </p>
<p>Wenn ich also versuche, den Tooltip in der Instanz zu initialisieren, wenn die Komponente gemountet wird, erhalte ich ein sehr seltsames Verhalten. Wenn die Tooltips angezeigt werden, werden sie von der zuletzt erstellten Komponente angezeigt, sodass es so aussieht, als ob <code> ; $options</code>ist in irgendeiner Weise „global“? </p>
<p>Wenn Sie <code>tooltip</code> in <code>data</code> einfügen, sollte der Tooltip offensichtlich nicht reagieren und ich möchte ihn in <code> ;Daten</Code>. </p>
<pre class="brush:html;toolbar:false;"><template>
<i
:class="['bi ', icon, hover && 'text-primary']"
class="bg-body"
@mouseover="hover = true; $options.tooltip.show();"
@mouseleave="hover = false; $options.tooltip.hide();"
@click="$options.tooltip.hide();"
style="Cursor: Zeiger"
:title="title"
ref="icon"
/>
</template>
<script>
{Tooltip} aus „bootstrap“ importieren;
Standard exportieren {
Requisiten: ["Symbol", "Titel"],
Tooltip: null,
Daten() {
zurückkehren {
schweben: falsch
}
},
mount() {
this.$options.tooltip = new Tooltip(this.$refs.icon,{
Platzierung: 'unten',
Auslöser: 'manuell',
Titel: this.title || ''.
});
},
}
</script>
</pre></p>
您可以直接在
mounted()
钩子中将非响应式属性附加到组件实例上:演示