Rumah > hujung hadapan web > View.js > Cara menggunakan ref dan reaktif dalam Vue3

Cara menggunakan ref dan reaktif dalam Vue3

WBOY
Lepaskan: 2023-05-12 17:34:12
ke hadapan
1090 orang telah melayarinya

1. Apa itu

ref dan reaktif ialah API yang digunakan dalam Vue3 untuk melaksanakan responsif data

Secara amnya, ref mentakrifkan jenis data asas , reactive Tentukan jenis data rujukan

2 Mari kita bincangkan tentang reaktif dahulu

Reaktif mentakrifkan jenis data rujukan (mengambil objek dan tatasusunan sebagai contoh), yang boleh menukar atribut dalaman atau item data jenis data kompleks Ia. diisytiharkan sebagai data responsif, jadi tindak balas reaktif adalah peringkat dalam Lapisan bawah adalah untuk melaksanakan responsif data melalui Proxy ES6 Berbanding dengan Object.defineProperty Vue2, ia mempunyai keupayaan untuk memantau penambahan dan operasi pemadaman , boleh memantau perubahan dalam sifat objek dan kelebihan lain

Contoh penggunaan reaktif untuk menentukan jenis data objek

const paginationConfig = reactive({
	pageNum: 1,
	pageSize: 10
}) // 定义

const onChange = () => {
	paginationConfig.pageNum = 2 // js使用
	paginationConfig.pageSize = 20 // js使用
}
Salin selepas log masuk
<!-- Vue3模板引用使用 -->
<a-pagination v-model:current="paginationConfig.pageNum"></a-pagination>
Salin selepas log masuk

Jika anda menggunakan reaktif untuk menentukan jenis data asas, Vue3 akan melaporkan ralat amaran, seperti yang ditunjukkan dalam rajah

const str = reactive(&#39;我是字符串&#39;)
Salin selepas log masuk

Cara menggunakan ref dan reaktif dalam Vue3

Cara menggunakan ref dan reaktif dalam Vue3

Analisis kod sumber Vue3 menunjukkan bahawa apabila menggunakan reaktif untuk menentukan data responsif, jika data bukan jenis objek dan dikembalikan secara langsung, tiada data seterusnya akan diproses Pemprosesan responsif dilakukan, itulah sebabnya saya hanya menggunakan reaktif untuk menentukan data responsif jenis objek Bagaimana dengan data jenis tatasusunan? Jawapannya boleh didapati di bawah

3 Mari kita bercakap tentang ref sekali lagi

Mengapa saya faham bahawa ref ialah pengkapsulan semula reaktif, kerana dalam kod sumber asas ref, ia adalah. masih dilaksanakan oleh reactive()

Cara menggunakan ref dan reaktif dalam Vue3

Cara menggunakan ref dan reaktif dalam Vue3

Daripada analisis kod sumber, kita tahu bahawa jika ia adalah jenis objek, logik asasnya ialah masih reaktif(). Di samping itu, kami tahu bahawa menggunakan ref Apabila mentakrifkan jenis data asas, anda perlu menambah akhiran .value apabila menggunakannya dalam skrip Walau bagaimanapun, ini tidak diperlukan dalam templat akan menambahkannya secara automatik untuk anda, yang menjadikan ref lebih mudah daripada reaktif

let num = ref(0) // 定义
let isShow = ref(false)  // 定义

const onChange = () => {
	num.value++  // js使用
	isShow.value = true  // js使用
}
Salin selepas log masuk
<!-- Vue3模板引用使用 -->
<a-modal v-model:visible="isShow"></a-modal>
Salin selepas log masuk

4 Perbandingan tatasusunan definisi ref dan reaktif

Contoh penggunaan ref untuk mentakrifkan tatasusunan adalah seperti berikut<🎜. >

const tableData = ref([]) // 定义

const getTableData = async () => {
	const { data } = await getTableDataApi() // 模拟接口获取表格数据
	tableData.value = data // 修改
}
Salin selepas log masuk
rrree

Angka tersebut menggunakan data jadual yang biasa kami gunakan sebagai contoh. Dapat dilihat bahawa tatasusunan definisi ref pada dasarnya adalah sama dengan tatasusunan definisi. Mari kita lihat reaktif

<!-- Vue3模板引用使用 -->
<a-table v-model:dataSource="tableData"></a-table>
Salin selepas log masuk
rrree

Perlu diambil perhatian bahawa menggunakan tableData = kaedah pengubahsuaian data akan menyebabkan tableData hilang secara reaktif Penyelesaiannya adalah seperti berikut (untuk rujukan)

const tableData = reactive([]) // 定义

const getTableData = async () => {
	const { data } = await getTableDataApi() // 模拟接口获取表格数据
	tableData = data // 修改,错误示例,这样赋值会使tableData失去响应式
}
Salin selepas log masuk

Atas ialah kandungan terperinci Cara menggunakan ref dan reaktif dalam Vue3. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
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