Rumah > hujung hadapan web > View.js > teks badan

Penjelasan terperinci tentang fungsi slot dalam Vue3: menggunakan slot untuk melaksanakan aplikasi komponen yang lebih fleksibel

PHPz
Lepaskan: 2023-06-19 10:06:10
asal
1648 orang telah melayarinya

Dalam Vue3, menggunakan slot boleh mencapai aplikasi komponen yang lebih fleksibel Artikel ini akan memperkenalkan secara terperinci aplikasi fungsi slot dalam Vue3.

1. Memahami slot

Dalam Vue, slot ialah teg khas Fungsinya serupa dengan templat dalam HTML dan boleh digunakan untuk memasukkan komponen. Slot dalam Vue3 jauh lebih maju daripada Vue2, memberikan penggunaan yang lebih fleksibel.

2. Gunakan slot lalai

Dalam Vue3, kami boleh menggunakan slot lalai dalam templat komponen. Slot lalai bermakna jika adegan komponen mengandungi bilangan nod anak yang tidak pasti, nod anak ini boleh diletakkan dalam teg komponen dan akhirnya diberikan. Ini semudah menggunakan slot lalai seperti slot dalam Vue2.

Sebagai contoh, kita boleh mentakrifkan komponen bernama HelloWorld, dan templat komponen mengandungi slot lalai:

<template>
  <div class="hello">
    <h1>{{ title }}</h1>
    <slot></slot>
  </div>
</template>
Salin selepas log masuk

Komponen ini akan menghasilkan teg h1 dan slot lalai.

Apabila menggunakan komponen ini, kita boleh menghantar data seperti berikut:

<template>
  <HelloWorld title="Welcome to my page">
    This is my website.
  </HelloWorld>
</template>
Salin selepas log masuk

Kod HTML yang akan diberikan ialah:

<div class="hello">
  <h1>Welcome to my page</h1>
  <slot>This is my website.</slot>
</div>
Salin selepas log masuk

Seperti yang anda lihat, kami adalah Apabila menggunakan komponen, anda menghantar "Ini adalah tapak web saya ke slot lalai, dan komponen itu meletakkannya dalam templat.

3. Gunakan slot bernama

Dalam beberapa kes, kita perlu menggunakan berbilang slot. Fungsi ini juga disediakan dalam Vue3. Slot bernama adalah untuk menambah atribut nama pada teg slot untuk menentukan nama untuk slot. Contohnya:

<template>
  <div class="todo-list">
    <h3>任务清单</h3>
    <ul>
      <li v-for="task in tasks" :key="task.id">
        <slot name="task" :task="task"></slot>
      </li>
    </ul>
  </div>
</template>
Salin selepas log masuk

Dalam komponen ini, kami mentakrifkan slot bernama "tugas" dan lulus tugas parameter. Apabila menggunakan komponen ini, kita boleh menggunakan arahan v-slot dalam teg untuk memadankan slot yang dinamakan:

<template>
  <TodoList>
    <template #task="{ task }">
      <span>{{ task.name }}</span>
      <button v-if="task.isComplete" @click="task.isComplete = false">完成</button>
      <button v-else @click="task.isComplete = true">未完成</button>
    </template>
  </TodoList>
</template>
Salin selepas log masuk

Dalam contoh di atas, kami menggunakan teg templat dan arahan v-slot untuk menentukan perkara yang perlu digunakan Nama slot ialah "tugas". Di sini nama tugas ditentukan, dan kemudian arahan v-if dan v-else digunakan untuk menentukan sama ada tugasan telah selesai.

4. Menggunakan slot skop

Dalam Vue3, selain slot yang dinamakan, ia juga menyediakan fungsi slot skop. Slot skop menggunakan parameter dalam slot yang dinamakan untuk bukan sahaja menghantar data, tetapi juga untuk menghasilkan templat yang lebih kompleks.

Sebagai contoh, kami mempunyai komponen senarai dan setiap item senarai perlu memaparkan butang untuk memadam sendiri. Komponen sedemikian boleh dilaksanakan menggunakan slot berskop vue.js.

<template>
  <ul>
    <slot v-for="item in items" :item="item" v-bind="item"></slot>
  </ul>
</template>
Salin selepas log masuk

Dalam komponen ini, kami menggunakan slot skop bernama "lalai" untuk melintasi setiap item dalam tatasusunan item dan mengeluarkannya supaya sub-komponen boleh mengakses Butiran.

Apabila menggunakan komponen ini, anda perlu menggunakan templat dan arahan v-slot dalam teg untuk memadankan slot skop:

<template>
  <List :items="todos">
    <template #default="props">
      <li>
        <input type="checkbox" v-model="props.item.isDone" />
        <span :class="{ done: props.item.isDone }">{{ props.item.text }}</span>
        <button @click="remove(props.item)">x</button>
      </li>
    </template>
  </List>
</template>
Salin selepas log masuk

Dalam contoh ini, kami menggunakan "#" slot Skop ialah ditakrifkan dan data diakses melalui prop.

Ringkasan

Fungsi slot Vue3 menyediakan pelbagai penggunaan yang fleksibel untuk membantu kami melaksanakan komponen yang lebih kompleks. Kami boleh menggunakan slot lalai untuk memasukkan kandungan melalui templat menggunakan slot yang dinamakan untuk lulus berbilang slot; Melalui fungsi ini, kami boleh menulis komponen yang lebih fleksibel dan meningkatkan penggunaan semula dan kebolehbacaan kod.

Atas ialah kandungan terperinci Penjelasan terperinci tentang fungsi slot dalam Vue3: menggunakan slot untuk melaksanakan aplikasi komponen yang lebih fleksibel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!