Geben Sie die Bereitstellungs-/Injektionsfunktion für Referenzen in VueJS ein
<p>Ich versuche, einen typisierten Verweis aus einer übergeordneten Komponente bereitzustellen und ihn in die untergeordnete Komponente einzufügen. </p>
<p>Ich bin nicht sicher, ob ich die VueJS-Dokumentation verstehe, aber das ist es, was ich mir ausgedacht habe. </p>
<pre class="brush:php;toolbar:false;">import type { Ref } from 'vue'
Importtyp {InjectionKey} aus 'vue'
Importieren Sie den Typ DocumentSet aus „@/types/DocumentSet“.
const documentSet = Symbol() as InjectionKey<{
documentSet: Ref<DocumentSet>,
aktualisieren: () =>
}>
Standarddokumentsatz</pre> exportieren
<p>Die Aufgabe besteht also darin, ein typisiertes Objekt (in meinem Fall ein documentSet) und eine Funktion bereitzustellen, die es aktualisiert. </p>
<p>Jetzt habe ich in der übergeordneten Komponente diesen Code: </p>
<pre class="brush:php;toolbar:false;">dsKey aus '@/injectionKeys/documentSet' importieren
Importieren Sie den Typ DocumentSet aus „@/types/DocumentSet“.
...
const documentSet = ref<DocumentSet |.
Provide(dsKey, {
documentSet,
update: () => console.log('update')
})</pre>
<p>Und in der untergeordneten Komponente habe ich diesen Code: </p>
<pre class="brush:php;toolbar:false;">dsKey aus '@/injectionKeys/documentSet' importieren
const ds = inject(dsKey)
const documentSet = ds?.documentSet</pre>
<p>Das Problem besteht darin, dass ich das Gefühl habe, etwas falsch zu machen, da es eine Menge Standardcode gibt.Ich kann zum Beispiel nicht verstehen, warum das DS-Objekt wie folgt umgestaltet werden sollte: </p>
<pre class="brush:php;toolbar:false;">const { documentSet } = ds</pre>
<p>Ist es möglich, den Code zu kürzen, anstatt <code>ds?.documentSet</code> zu schreiben, insbesondere wenn ich sicher bin, dass ds vorhanden sein sollte (ohne ihn werde ich die untergeordnete Komponente nicht rendern)< ;/p>
<p>Wenn ich <code>const { documentSet } = inject(dsKey)</code> schreibe, erscheint die folgende Fehlermeldung: </p>
<p><code>TS2339: Eigenschaft 'documentSet' existiert nicht für Typ '{ documentSet: Ref ;' Update: () => Ungültig '.</code></p>
<p>Die Idee besteht darin, dass ich Duplikate in untergeordneten Komponenten beseitigen möchte:</p>
<pre class="brush:php;toolbar:false;"><DocumentSetInfo
:documentSet="documentSet"
/>
<DocumentSetMemos
:documentSet="documentSet"
/>
<DocumentSetPrograms
:documentSet="documentSet"
/>
<DocumentSetPetition
:documentSet="documentSet"
/>
<DocumentSetPassRequests
:documentSet="documentSet"
/>
<DocumentSetReport
:documentSet="documentSet"
/>
<DocumentSetReceptionNotices
:documentSet="documentSet"
/></pre></p>