Méthode pour afficher les éléments enfants dans WebComponent
P粉514001887
2023-09-04 09:18:39
<p>J'essaie de reconstruire un composant React en WebComponent afin de me débarrasser de la dépendance à React. </p>
<p>J'aimerais voir un WebComponent comme celui-ci en HTML : </p>
<pre class="brush:php;toolbar:false;"><editable-h1>Bonjour tout le monde</editable-h1></pre>
<p>Cela devrait ressembler à ceci :</p>
<pre class="brush:php;toolbar:false;"><span>
<h1>Bonjour tout le monde</h1>
<button onClick=this.onEdit>Modifier</button>
</span></pre>
<p>Si je clique sur le bouton Modifier, je souhaite qu'il apparaisse comme ceci : </p>
<pre class="brush:php;toolbar:false;"><form>
<input type='text' value='Bonjour tout le monde'></input>
<button onClick=this.onSave>Enregistrer</button>
</form></pre>
<p>Cliquer sur le bouton Enregistrer enregistrera les modifications apportées à la base de données via un appel API et reviendra au rendu d'origine (mais avec le texte déjà modifié). </p>
<p>Je pense que je peux gérer le changement de rendu et les appels d'API, mais ce qui me rend confus, c'est comment obtenir le texte de l'élément enfant "Bonjour tout le monde" à partir du composant Web initial afin d'effectuer le rendu. </p>
Tags ouverts sur
<editable-h1>
上触发connectedCallback
événementsDonc, le
Hello World
innerHTML de votre n'a pas encore été analyséPour attendre que l'analyse soit terminée avant de l'exécuter, utilisez
setTimeout
REMARQUE : Tout est fourni
parsedCallback
的工具和库都会在底层使用类似的技巧,使用requestAnimationFrame
或MutationObserver
(et plus de lignes de code).Si vous pensez qu'une ligne
(Bien sûr, cela nécessite un chargement et une analyse, ce qui augmente également les dépendances et la complexité du code, donc cela prend globalement plus de temps)setTimeout
是一个hack,或者你不想使用setTimeout
est un hack, ou si vous ne voulez pas perdre cette milliseconde en utilisant , vous pouvez consulter le code d'élément html-parsed d'Andrea GiamarchiEt suivez les experts WC, cette discussion continue : Besoin d'une fonction de rappel à exécuter une fois l'élément enfant modifié ou l'analyse terminée https://github.com/WICG/webcomponents/issues/809
Toutes les méthodes se résument au même objectif : Attendre que la boucle d'événement soit vide
Qu'est-ce que la boucle événementielle ? https://www.youtube.com/watch?v=8aGhZQkoFbQ