Adakah tiada cara untuk mengendalikan kandungan slot dalam Vue 3 dengan pasti?
P粉714844743
2023-08-30 08:47:17
<p>Saya sedang memindahkan pangkalan kod Vue 2 ke Vue 3. </p>
<pre class="brush:php;toolbar:false;"><card>
<template #default>
<pengepala kad>
<tajuk peringkat="3">Tajuk</tajuk>
</card-header>
<kad-badan
v-for="b dalam bodyCount"
:key="'b' + b">
Badan {{ b }}
</card-body>
<pengaki kad
v-for="f dalam footerCount"
:key="'f' + f">
<teks>Pengaki {{ f }}</text>
</card-footer>
</template>
</kad></pre>
<p>Komponen Kad mempunyai fungsi pemaparan yang memanggil <kod>ini.$slots.default()</code>. Walau bagaimanapun, dalam Vue 3 ini mengembalikan kandungan yang berbeza daripada dalam Vue 2. Jadi jika saya melakukan <code>console.log(this.$slots.default())</code> - Saya mendapat tatasusunan dengan 3 elemen, [nod v jenis "header", taipkan Nod v daripada Simbol(Fragmen), nod v jenis Simbol(Fragmen)]</p>
<p>Secara lebih khusus, ia tidak mengenali pengaki/badan kad sebagai komponen, sebaliknya saya melihat simbol (serpihan) dalam jenis. Pengepala kad sebenarnya baik kerana ia tidak berada di dalam gelung v-untuk. </p>
<p>Terdapat logik di dalam fungsi pemaparan komponen kad yang perlu mengetahui berapa banyak komponen teks/pengaki yang ada padanya. Jadi saya perlu dapat memberitahu jenis komponen. Adakah ini tidak boleh dilakukan dalam Vue 3? Saya boleh mengagak ini ada kaitan dengan v-for di sini, tetapi saya tidak pasti bagaimana sebenarnya untuk mendapatkan v-nod akhir. Dalam contoh ini, bukannya 3 elemen, saya mahu tatasusunan mengandungi pengepala kad + semua badan kad + semua pengaki kad. </p>
Reka bentuk komponen kad anda tidak kelihatan bermakna bagi saya. Saya cadangkan anda pertimbangkan semula.
Ini ialah slot render taman permainan yang ringkas
Sila ambil perhatian amaran. Vue tidak akan memaparkan
card-header
di sini kerana ia tidak dapat menghuraikannya.Jika anda boleh mengakses data, mengapa lulus
slots
操作card-body
/card-footer
项目直接通过bodyCount
?Jika ia kelihatan tidak munasabah pada saya.
Ternyata - serpihan boleh dikembangkan melalui sifat Kanak-kanak pada setiap elemen tatasusunan. Jadi dalam kes ini, v-for menghasilkan nod v, yang merupakan serpihan, tetapi kita boleh membuat kesimpulan lebih lanjut dengan melihat sifat Kanak-kanak.