Kaedah untuk memaparkan elemen kanak-kanak dalam WebComponent
P粉514001887
2023-09-04 09:18:39
<p>Saya cuba membina semula komponen React ke dalam WebComponent untuk menghilangkan pergantungan pada React. </p>
<p>Saya ingin melihat WebComponent seperti ini dalam HTML: </p>
<pre class="brush:php;toolbar:false;"><editable-h1>Helo, world</editable-h1></pre>
<p>Ia sepatutnya kelihatan seperti ini:</p>
<pre class="brush:php;toolbar:false;"><span>
<h1>Helo, dunia</h1>
<butang onClick=this.onEdit>Edit</button>
</span></pre>
<p>Jika saya mengklik butang edit, saya mahu ia kelihatan seperti ini: </p>
<pre class="brush:php;toolbar:false;"><form>
<input type='text' value='Hello, world'></input>
<butang onClick=this.onSave>Save</button>
</form></pre>
<p>Mengklik butang Simpan akan menyimpan perubahan pada pangkalan data melalui panggilan API dan kembali ke pemaparan asal (tetapi dengan teks sudah diedit). </p>
<p>Saya percaya saya boleh mengendalikan penukaran pemaparan dan membuat panggilan API, tetapi apa yang saya keliru ialah cara mendapatkan teks elemen kanak-kanak "Hello, dunia" daripada WebComponent awal untuk dipaparkan. </p>
Buka tag pada
<editable-h1>
上触发connectedCallback
acaraJadi
Hello World
innerHTML anda belum dihuraikan lagiUntuk menunggu sehingga penghuraian selesai sebelum melaksanakan, gunakan
setTimeout
NOTA: Semua disediakan
parsedCallback
的工具和库都会在底层使用类似的技巧,使用requestAnimationFrame
或MutationObserver
(dan lebih banyak baris kod).Jika anda rasa satu baris
(Sudah tentu ia memerlukan pemuatan dan penghuraian, yang juga meningkatkan kebergantungan dan kerumitan kod, jadi ia memerlukan lebih banyak masa secara keseluruhan)setTimeout
是一个hack,或者你不想使用setTimeout
adalah satu penggodaman, atau anda tidak mahu membazirkan milisaat itu menggunakan , anda boleh menyemak Kod elemen html-parsed-elemen Andrea GiammarchiDan ikuti pakar WC, perbincangan ini diteruskan: Memerlukan fungsi panggil balik untuk dilaksanakan selepas elemen anak berubah atau penghuraian selesai https://github.com/WICG/webcomponents/issues/809
Semua kaedah bermuara kepada matlamat yang sama: Tunggu sehingga gelung acara kosong
Apakah gelung acara? https://www.youtube.com/watch?v=8aGhZQkoFbQ