informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Vue 3 memperkenalkan Composition API, yang menghadirkan fleksibilitas dan kekuatan baru pada komunikasi komponen.
Dalam pengembangan front-end, komponen dapat dianggap sebagai unit independen yang membangun antarmuka pengguna. Ini merangkum fungsionalitas dan gaya tertentu, dapat digunakan kembali, dan dapat dikembangkan dan diuji secara independen dari bagian lain. Fungsi utama komponen adalah untuk meningkatkan penggunaan kembali kode, pemeliharaan, dan skalabilitas. Dengan membagi antarmuka menjadi beberapa komponen, pengembang dapat lebih mudah mengelola aplikasi yang kompleks, dan setiap komponen dapat dioptimalkan untuk meningkatkan efisiensi pengembangan dan kinerja aplikasi secara keseluruhan.
Dalam kerangka front-end seperti Vue.js, komponen dapat disarangkan untuk membentuk pohon komponen. Dalam struktur pohon ini, setiap komponen dapat memiliki subkomponen, dan subkomponen tersebut dapat memiliki subkomponennya sendiri sehingga membentuk struktur hierarki. Struktur ini membuat hubungan antar komponen menjadi jelas dan memudahkan pengelolaan dan pemeliharaan.
Konsep pohon komponen dan hubungan komponen orang tua-anak sangat penting untuk memahami komunikasi komponen. Menguasai pengetahuan dasar ini dapat membantu pengembang merancang dan mengimplementasikan mekanisme komunikasi antar komponen dengan lebih efektif.
Apa itu alat peraga
Props adalah mekanisme komponen induk untuk meneruskan data ke komponen anak.Di Vue 3, gunakandefineProps
API digunakan untuk mendeklarasikan props penerima, yang menjaga aliran data satu arah dan memastikan independensi dan penggunaan kembali komponen.
Cara meneruskan props di komponen induk
Di templat komponen induk, gunakanv-bind
atau singkatan:
Untuk mengikat data:
- <template>
- <ChildComponent :my-prop="parentData" />
- </template>
Di Sini,:my-prop
Menunjukkan bahwa ini adalah prop yang terikat secara dinamis,parentData
Apakah data ditentukan dalam komponen induk。
Cara menerima props di komponen anak
Di komponen anak, gunakandefineProps
Untuk mendeklarasikan props yang diterima:
- <script setup>
- import { defineProps } from 'vue';
-
- const props = defineProps({
- myProp: String
- });
- </script>
ada<script setup>
Dalam gula sintaksis,defineProps
Secara otomatis akan mengekspos props sebagai properti responsif komponen。
apa yang dipancarkan
Emit adalah mekanisme komponen anak untuk mengirim pesan ke komponen induk.Di Vue 3, gunakandefineEmits
API untuk mendeklarasikan peristiwa yang dapat dipancarkan, dan digunakanemit
berfungsi untuk memicu peristiwa.
Cara memicu peristiwa di komponen anak
Dalam metode komponen anak, gunakan defineEmits
untuk mendeklarasikan peristiwa yang dapat dipancarkan, dan digunakan emit
untuk memicu:
- <script setup>
- import { defineEmits } from 'vue';
-
- const emit = defineEmits(['my-event']);
-
- function triggerEvent() {
- emit('my-event', dataToPass);
- }
- </script>
defineEmits
digunakan untuk mendeklarasikan event yang dapat dikeluarkan oleh suatu komponen, sementaraemit
Fungsi digunakan untuk memicu peristiwa ini.
Cara mendengarkan peristiwa komponen anak di komponen induk
Dalam templat komponen induk,menggunakanv-on
atau singkatan@
Untuk mendengarkan kejadian yang dikeluarkan oleh komponen anak:
- <template>
- <ChildComponent @my-event="handleEvent" />
- //或者<ChildComponent v-on:my-event="handleEvent" />
- </template>
Di Sini,@my-event
Menunjukkan bahwa subkomponen mendengarkan memancarkanmy-event
peristiwa,handleEvent
Ini adalah metode yang ditentukan dalam komponen induk. Ketika peristiwa dipicu, metode ini akan dipanggil.
Asumsikan ada komponen indukParentComponent
dan subkomponenChildComponent
, komponen induk perlu meneruskan data ke komponen anak, dan komponen anak perlu memberi tahu komponen induk setelah operasi tertentu.
komponen indukParentComponent.vue
- <template>
- <ChildComponent :my-prop="parentData" @child-event="handleChildEvent" />
- </template>
-
- <script setup>
- import { ref } from 'vue';
- import ChildComponent from './ChildComponent.vue';
-
- const parentData = ref('initial data');
- const handleChildEvent = (data) => {
- console.log('Received data from child:', data);
- };
- </script>
SubperakitanChildComponent.vue
- <template>
- <button @click="sendDataToParent">Send Data to Parent</button>
- </template>
-
- <script setup>
- import { defineProps, defineEmits } from 'vue';
-
- const props = defineProps({
- myProp: String
- });
-
- const emit = defineEmits(['child-event']);
-
- function sendDataToParent() {
- emit('child-event', props.myProp);
- }
- </script>
Dalam contoh ini, komponen induk lolos:my-prop
Teruskan data ke komponen anak dan teruskan@child-event
Dengarkan peristiwa yang dikeluarkan oleh komponen anak.komponen anak lolosdefineProps
Menerima konten yang diteruskan oleh komponen indukmyProp
, dan menggunakannya dalam acara klik tombolemit
Kirim data ke komponen induk.
Pinia adalah pustaka manajemen status yang direkomendasikan secara resmi untuk Vue 3. Pinia menyediakan cara berbasis komponen untuk mengelola status aplikasi. Berikut adalah beberapa manfaat dan fitur utama Pinia:
Untuk mulai menggunakan Pinia, Anda perlu menginstal Pinia terlebih dahulu:
npm install pinia
Atau gunakan Benang:
yarn add pinia
Kemudian, atur Pinia di aplikasi Vue Anda:
- import { createPinia } from 'pinia';
-
- const pinia = createPinia();
- app.use(pinia);
Buat toko:
- import { defineStore } from 'pinia';
-
- export const useCounterStore = defineStore('counter', () => {
- const count = ref(0);
-
- function increment() {
- count.value++;
- }
-
- return { count, increment };
- });
Gunakan toko di komponen:
- <script setup>
- import { useCounterStore } from '@/stores/counter';
-
- const counterStore = useCounterStore();
- </script>
-
- <template>
- <div>
- <p>Count: {{ counterStore.count }}</p>
- <button @click="counterStore.increment">Increment</button>
- </div>
- </template>
Integrasi Pinia dengan komponen sangat sederhana, terutama melaluidefineStore
berfungsi untuk membuat toko. Di komponen, Anda dapat langsung menggunakan status dan metode di penyimpanan:
- <template>
- <div>
- <p>Count: {{ count }}</p>
- <button @click="increment">Increment</button>
- </div>
- </template>
-
- <script setup>
- import { useCounterStore } from '@/stores/counter';
-
-
- const counterStore = useCounterStore();
- const { count, increment } = storeToRefs(counterStore);
- //如果这里不使用storeToRefs会丢失响应式特性
- </script>
Pada contoh di atas, kita mengakses langsung di templatecount
untuk menampilkan nilai penghitung dan memanggilnya di acara klik tombolincrement
Metode untuk menaikkan nilai penghitung.
Penggunaan dasar Menyediakan/Menyuntikkan
Di Vue 3,provide
Daninject
Ini adalah metode komunikasi antara komponen induk dan anak yang memungkinkan komponen leluhur memasukkan ketergantungan ke semua komponen turunannya, terlepas dari seberapa dalam hierarki komponennya.
provide
Fungsi menyediakan data.inject
Fungsi menyuntikkan data.Skenario yang berlaku untuk Menyediakan/Menyuntikkanprovide
Daninject
Berlaku untuk skenario berikut:
props
saat meneruskan data.Kode sampel:
- // 祖先组件
- export default {
- setup() {
- const message = 'Hello from Ancestor!';
- provide('message', message);
- }
- }
-
- // 子孙组件
- export default {
- setup() {
- const message = inject('message');
- return { message };
- }
- }
Konsep dan penggunaan TeleportasiTeleport
Ini adalah komponen bawaan baru yang ditambahkan di Vue 3, yang memungkinkan Anda untuk "mentransmisikan" bagian dari template di dalam komponen ke lokasi lain di DOM.
Cara menggunakan Teleportasi untuk komunikasi komponenTeleport
Ini tidak digunakan untuk komunikasi antar komponen, tetapi untuk mengontrol posisi rendering komponen.tapi kamu bisa menggunakannyaTeleport
Metode komunikasi khusus dicapai dengan merender bagian komponen ke dalam DOM komponen induk.
Kode sampel:
- <!-- 父组件 -->
- <template>
- <div>
- <Teleport to="body">
- <ChildComponent />
- </Teleport>
- </div>
- </template>
-
- <!-- 子组件 -->
- <template>
- <div>Some content</div>
- </template>
Pengantar API Komposisi
Vue 3 memperkenalkan Composition API, yang menyediakan cara baru untuk mengatur dan menggunakan kembali logika.lulussetup
Fungsi memungkinkan pengembang untuk lebih fleksibel mengontrol status responsif dan siklus hidup komponen.
Gunakan ref dan reaktif untuk komunikasi antar komponenref
Danreactive
Ini adalah alat di Composition API untuk membuat data responsif.
ref
Referensi reaktif untuk membuat tipe data dasar.reactive
Referensi reaktif untuk membuat tipe objek.Menggunakan penyediaan dan injeksi di API Komposisi
Di API Komposisi,provide
Daninject
diperbolehkansetup
Digunakan dalam fungsi untuk mencapai komunikasi lintas komponen.
Kode sampel:
- // 祖先组件
- import { provide } from 'vue';
-
- export default {
- setup() {
- const message = ref('Hello from Ancestor!');
- provide('message', message);
- }
- }
-
- // 子孙组件
- import { inject } from 'vue';
-
- export default {
- setup() {
- const message = inject('message');
- return { message };
- }
- }
Melalui metode komunikasi unik Vue 3 ini, pengembang dapat lebih fleksibel mengatur komunikasi antar komponen dan meningkatkan pemeliharaan dan penggunaan kembali kode.
Vue 3 memperkenalkan Composition API, yang menghadirkan fleksibilitas baru dan fitur canggih pada komunikasi komponen. Komunikasi komponen adalah kunci untuk membangun antarmuka pengguna yang kompleks dalam pengembangan front-end. Ini melibatkan transfer data dan pemicu peristiwa antara komponen induk dan anak, komponen saudara, serta komponen leluhur dan keturunan. Vue 3 menyediakan berbagai metode komunikasi, termasuk props dan emit tradisional, serta Provide/Inject, Teleport, dan Composition API yang baru.
Pembuatannya tidak mudah. Jika artikel ini membantu Anda, bisakah Anda memberi saya suka?