Artikel ini akan memberi anda perbincangan mendalam tentang penggunaan ref, toRef dan toRefs dalam projek vue3. Saya harap ia akan membantu semua orang.
fungsi ref boleh membungkus jenis data ringkas ke dalam data responsif ( Jenis kompleks ialah. juga tersedia). Harap maklum bahawa apabila memanipulasi nilai dalam JS, anda perlu menambah atribut .value Anda boleh menggunakannya seperti biasa dalam templat.
Contohnya:
<template> <div> <div>{{ name }}</div> <button>修改数据</button> </div></template><script> import { ref } from 'vue' export default { name: 'App', setup() { const name = ref('初映') const updateName = () => { name.value = '初映CY的前说' } return { name, updateName } }, }</script>
Tulisan yang boleh dilihat dan reaktif () adalah sama, tetapi anda perlu menambah .value tambahan semasa menulis dalam js. [Cadangan berkaitan: tutorial video vuejs, pembangunan bahagian hadapan web]
<template> <div> <div>{{ data?.name }}</div> <button>修改数据</button> </div></template><script> import { ref } from 'vue' export default { name: 'App', setup() { // 初始值是 null const data = ref(null) setTimeout(() => { // 右边的对象可能是后端返回的 data.value = { name: '初映', } }, 1000) const updateName = () => { data.value.name = 'CY' } return { data, updateName } }, }</script>
Peranan fungsi toRef: menukar atribut tertentu dalam objek responsif kepada data responsif yang berasingan, dan Nilai yang ditukar berkaitan dengan yang sebelumnya (fungsi ref juga boleh ditukar, tetapi nilainya tidak berkaitan).
Mula-mula lihat contoh berikut:
<template> <div> <h2>name: {{ obj.name }} age: {{obj.age}}</h2> <button>修改数据</button> </div></template><script> import { reactive } from 'vue' export default { name: 'App', setup() { const obj = reactive({ name: '初映', age: 18, address: '江西', sex: '男', }) const updateName = () => { obj.name = '初映CY的前说' } return { obj, updateName } }, }</script>
Menulis dengan cara ini juga boleh menukar data menjadi data responsif, tetapi ia membawa dua masalah:
Soalan 1: Obj mesti digunakan dalam templat untuk mendapatkan data, yang menyusahkan.
Masalah 2: Walaupun hanya nama dan umur digunakan dalam templat, keseluruhan obj dieksport Ini tidak perlu dan membazirkan prestasi.
<template> <div> <h2>name: {{ name }} </h2> <button>修改数据</button> </div></template><script> import { reactive,toRef } from 'vue' export default { name: 'App', setup() { const obj = reactive({ name: '初映', age: 18, address: '江西', sex: '男', }) const name = toRef(obj, 'name') const updateName = () => { obj.name = '初映CY的前说' } return { name, updateName } }, }</script>
Dengan cara ini, kami boleh meletakkan data yang kami perlukan ke dalam pemulangan, yang menjimatkan prestasi dan penulisan dalam templat, dan sedikit lebih seperti 'import atas permintaan'
Peranan fungsi toRefs: menukar semua sifat dalam objek responsif kepada data responsif yang berasingan dan nilai yang ditukar. adalah sama seperti sebelum ini dikaitkan.
<template> <div> <h2>{{ name }} {{ age }}</h2> <button>修改数据</button> </div></template><script> import { reactive, toRefs } from 'vue' export default { name: 'App', setup() { const obj = reactive({ name: '初映', age: 10, }) const updateName = () => { obj.name = '初映CY的前说' obj.age = 18 } return { ...toRefs(obj), updateName } }, }</script>
toRefs mengembalikan semua data responsif kami Kemudian hanya gunakan nama data. oh
Mengikut. Tanpa berlengah lagi, mari kita pelajari cara menggunakan ketiga-tiga kaedah ini dan perbezaannya dengan reaktif.
(Mempelajari perkongsian video: tutorial pengenalan vuejs, Video pengaturcaraan asas)
Atas ialah kandungan terperinci Artikel untuk bercakap tentang ref, toRef, toRefs dalam vue3. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!