Cara menggunakan Provide and Inject untuk membuat pemalam Vue3
Mengapa pemalam Vue3 berfungsi secara berbeza berbanding sebelum ini
Dalam Vue2, kebanyakan pemalam menyuntik sifat pada ini. Contohnya, penghala Vue boleh diakses melalui ini.$router.
Walau bagaimanapun, kaedah persediaan() tidak lagi mengandungi rujukan yang sama kepada ini. Sebab utama perubahan ini adalah untuk menambah sokongan untuk Typescript.
Jadi bagaimana kita boleh mengakses pemalam kami dalam Vue3. Kami boleh menggunakan menyediakan dan menyuntik untuk membantu kami menyuntik kebergantungan ke dalam program Vue. Provide/inject digunakan untuk suntikan kebergantungan, yang membolehkan kami menyediakan pemalam dalam direktori akar program Vue dan kemudian menyuntiknya ke dalam komponen anak.
Dalam API Komposisi, kedua-dua kaedah ini hanya boleh dipanggil semasa kaedah persediaan().
Apakah yang disediakan dan disuntik
Kami memerlukan beberapa jenis kunci untuk mengenal pasti kebergantungan, dan Simbol Javascript boleh menggabungkan keperluan ini.
Kaedah provide kemudiannya akan mengaitkan Simbol kami dengan nilai, dan kaedah suntikan akan mendapatkan semula nilai ini dengan Simbol yang sama.
Berikut ialah contoh:
import { provide, inject } from 'vue' const LoggedInSymbol = Symbol() const ParentComponent = { setup() { provide(LoggedInSymbol, true) } } const DeepDescendent = { setup() { // 第二个可选参数是默认值(如果不存在) const isLoggedIn = inject(LoggedInSymbol, false) return { isLoggedIn } } }
Vue3 boleh melaksanakan beberapa teknik yang sangat praktikal melalui mod ini.
Pergantungan boleh disediakan secara global dalam program
Jika kami ingin menyediakan sesuatu dalam skop global, kami boleh menggunakan app.provide apabila mengisytiharkan tika VUE kami. Suntikan kemudian boleh dilakukan dengan cara yang sama.
main.jsimport { createApp } from 'vue' import App from './App.vue' const app = createApp(App) const ThemeSymbol = Symbol() app.provide(ThemeSymbol, 'dark') app.mount('#app')
Boleh menyediakan data responsif menggunakan ref
Ini juga sangat mudah jika kita ingin menghantar data responsif kepada komponen kanak-kanak. Hanya gunakan ref() untuk lulus sifat reaktif kaedah kami.
// 生产者r (父组件) const LoggedInSymbol = Symbol() const loggedIn = ref('true') provide(LoggedInSymbol, loggedIn) // 消费者 (子组件) const theme = inject(LoggedInSymbol, ref('false'))
Cara menggunakan menyediakan dan menyuntik dalam pemalam
Sebenarnya mereka bentuk pemalam adalah hampir sama dengan contoh mudah yang baru kita lihat.
Tetapi daripada menggunakan satu nilai, kami mahu menggunakan fungsi gabungan. Ini adalah kelebihan besar Vue3 - keupayaan untuk mengatur dan mengekstrak kod berdasarkan fungsi.
Memandangkan kod kami harus ditulis dengan fungsi gubahan tersusun, kami hanya perlu mencipta kaedah menyediakan dan menyuntik ini untuk menulis pemalam.
Pertama, mari kita lihat secara ringkas contoh pemalam yang disediakan dalam dokumentasi API Komposisi Vue3.
Plugin.jsconst StoreSymbol = Symbol() export function provideStore(store) { provide(StoreSymbol, store) } export function useStore() { const store = inject(StoreSymbol) if (!store) { // throw error, no store provided } return store }
digunakan seperti ini dalam komponen sebenar:
// 在组件根目录提供 store // const App = { setup() { provideStore(store) } } const Child = { setup() { const store = useStore() // use the store } }
Menurut kod di atas, dalam beberapa komponen akar, kami menyediakan pemalam dan lulus fungsi komponen kepada mereka. Kemudian kita perlu menyuntiknya ke dalam komponen kita di mana sahaja kita mahu menggunakannya.
Komponen tidak perlu benar-benar membuat panggilan menyediakan/menyuntik, tetapi hanya kaedah provideStore/useStore yang didedahkan oleh pemalam.
Bolehkah saya masih menggunakan pemalam lama?
Ringkasnya: ya. Kalau nak cakap lebih, terpulang pada fikiran sendiri.
Anda boleh terus menggunakan API Pilihan dan merujuk ini dengan cara yang sama seperti sebelum ini, dan semua pemalam lama berfungsi tidak berubah.
Tetapi berhijrah ke Vue3 dan memanfaatkan semua cirinya terasa seperti berbaloi.
Selagi anda mahu menggunakan API Pilihan Vue2, pemalam anda akan berfungsi dengan baik. Walau bagaimanapun, banyak pemalam atau perpustakaan yang diselenggara dengan baik harus menambah sokongan untuk Vue3.
Atas ialah kandungan terperinci Cara menggunakan Provide and Inject untuk membuat pemalam Vue3. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



tinymce ialah pemalam editor teks kaya yang berfungsi sepenuhnya, tetapi memperkenalkan tinymce ke dalam vue tidak selancar seperti pemalam teks kaya Vue yang lain tidak sesuai untuk Vue dan @tinymce/tinymce-vue perlu diperkenalkan. dan Ia adalah pemalam teks kaya asing dan belum melepasi versi Cina Anda perlu memuat turun pakej terjemahan dari tapak web rasminya (anda mungkin perlu memintas tembok api). 1. Pasang kebergantungan yang berkaitan npminstalltinymce-Snpminstall@tinymce/tinymce-vue-S2 Muat turun pakej Cina 3. Perkenalkan pakej kulit dan Cina Buat folder tinymce baharu dalam folder awam projek dan muat turun

Penggunaan vue3+vite:src memerlukan pengimportan imej secara dinamik dan laporan ralat dan penyelesaian vue3+vite secara dinamik Jika vue3 dibangunkan menggunakan skrip taip, akan terdapat mesej ralat untuk keperluan untuk memperkenalkan imej tidak boleh digunakan :require(' .../assets/test.png') diimport kerana typescript tidak menyokong require, jadi import digunakan Berikut ialah cara menyelesaikannya: gunakan awaitimport

Untuk mencapai muat semula separa halaman, kami hanya perlu melaksanakan pemaparan semula komponen setempat (dom). Dalam Vue, cara paling mudah untuk mencapai kesan ini ialah menggunakan arahan v-if. Dalam Vue2, selain menggunakan arahan v-if untuk memaparkan semula dom setempat, kami juga boleh mencipta komponen kosong baharu Apabila kami perlu memuat semula halaman setempat, lompat ke halaman komponen kosong ini dan kemudian masuk semula pengawal beforeRouteEnter dalam komponen kosong. Seperti yang ditunjukkan dalam rajah di bawah, cara mengklik butang muat semula dalam Vue3.X untuk memuatkan semula DOM dalam kotak merah dan memaparkan status pemuatan yang sepadan. Memandangkan pengawal dalam komponen dalam sintaks persediaan skrip dalam Vue3.X hanya mempunyai o

Vue melaksanakan bahagian hadapan blog dan perlu melaksanakan penghuraian markdown Jika terdapat kod, ia perlu melaksanakan penyerlahan kod. Terdapat banyak pustaka parsing markdown untuk Vue, seperti markdown-it, vue-markdown-loader, marked, vue-markdown, dsb. Perpustakaan ini semuanya sangat serupa. Ditanda digunakan di sini, dan highlight.js digunakan sebagai pustaka penonjolan kod. Langkah-langkah pelaksanaan khusus adalah seperti berikut: 1. Pasang perpustakaan bergantung Buka tetingkap arahan di bawah projek vue dan masukkan arahan berikut npminstallmarked-save//marked untuk menukar markdown ke htmlnpmins.

vue3+ts+axios+pinia menyedari penyegaran yang tidak masuk akal 1. Mula-mula muat turun aiXos dan pinianpmipinia dalam projek--savenpminstallaxios--save2. AxiosResponse}daripada"axios";importaxiosfrom'axios';import{ElMess

Kesan terakhir ialah memasang komponen VueCropper yarnaddvue-cropper@next Nilai pemasangan di atas adalah untuk Vue3 Jika ia adalah Vue2 atau anda ingin menggunakan kaedah lain untuk merujuk, sila lawati alamat npm rasminya. Ia juga sangat mudah untuk merujuk dan menggunakannya dalam komponen Anda hanya perlu memperkenalkan komponen yang sepadan dan fail gayanya. Saya tidak merujuknya secara global di sini, tetapi hanya memperkenalkan import{userInfoByRequest}from'../js/api. ' dalam fail komponen saya import{VueCropper}dari'vue-cropper&

Prakata Sama ada ia adalah vue atau react, apabila kita menghadapi berbilang kod berulang, kita akan memikirkan cara untuk menggunakan semula kod ini, dan bukannya mengisi fail dengan sekumpulan kod berlebihan. Malah, kedua-dua vue dan react boleh mencapai penggunaan semula dengan mengekstrak komponen, tetapi jika anda menemui beberapa serpihan kod kecil dan anda tidak mahu mengekstrak fail lain, sebagai perbandingan, react boleh digunakan dalam yang sama Isytiharkan widget yang sepadan dalam fail , atau laksanakannya melalui fungsi render, seperti: constDemo:FC=({msg})=>{returndemomsgis{msg}}constApp:FC=()=>{return(

Menggunakan Vue untuk membina elemen tersuai WebComponents ialah nama kolektif untuk satu set API asli web yang membenarkan pembangun mencipta elemen tersuai yang boleh diguna semula (customelements). Faedah utama elemen tersuai ialah ia boleh digunakan dengan mana-mana rangka kerja, walaupun tanpa satu. Ia sesuai apabila anda menyasarkan pengguna akhir yang mungkin menggunakan tindanan teknologi bahagian hadapan yang berbeza, atau apabila anda ingin mengasingkan aplikasi akhir daripada butiran pelaksanaan komponen yang digunakannya. Vue dan WebComponents ialah teknologi pelengkap, dan Vue menyediakan sokongan yang sangat baik untuk menggunakan dan mencipta elemen tersuai. Anda boleh menyepadukan elemen tersuai ke dalam aplikasi Vue sedia ada, atau menggunakan Vue untuk membina
