vue3中toRef、toRefs和toRaw的使用
1.toRef
toRef 的作用是將一個(gè)響應(yīng)式對(duì)象中的屬性
轉(zhuǎn)換成單獨(dú)的響應(yīng)式引用。轉(zhuǎn)換后的響應(yīng)式引用會(huì)跟蹤原始屬性
的變化。轉(zhuǎn)換后的響應(yīng)式可以被用于計(jì)算屬性
及監(jiān)聽器
中。
如果原始對(duì)象是非響應(yīng)式的則不會(huì)更新視圖,數(shù)據(jù)會(huì)改變。
接收兩個(gè)參數(shù):
- 參數(shù)一:原始對(duì)象;
- 參數(shù)二:屬性。
<template> <div> {{ man }} </div> <br /> <div> <button @click="change">點(diǎn)擊</button> </div> </template> <script setup lang="ts"> import { toRef, toRefs, reactive, toRaw } from 'vue' const man = reactive({ name: '張三', age: 18, like: '唱' }) const like = toRef(man, 'like') const change = () => { man.age = 19 like.value = '跳' console.log(man) } </script>
點(diǎn)擊前頁面:
點(diǎn)擊后結(jié)果:
2.toRefs
toRefs 將一個(gè)對(duì)象的所有屬性變成響應(yīng)式引用,追蹤原對(duì)象的引用關(guān)系。
原始對(duì)象如果是響應(yīng)式的,則當(dāng)修改屬性值時(shí),數(shù)據(jù)和視圖都會(huì)更新;原對(duì)象如果非響應(yīng)式,則修改屬性值時(shí),數(shù)據(jù)會(huì)更新,視圖不更新。
接收一個(gè)參數(shù):原始對(duì)象。
<template> <div> {{ man }} </div> <br /> <div> <button @click="change2">點(diǎn)擊2</button> </div> </template> <script setup lang="ts"> import { toRef, toRefs, reactive, toRaw } from 'vue' const man = reactive({ name: '張三', age: 18, like: '唱' }) const { name, age } = toRefs(man) const change2 = () => { name.value = '李四' age.value = 20 } </script> <style scoped></style>
點(diǎn)擊前頁面:
點(diǎn)擊后結(jié)果:
3.toRaw
toRaw 將一個(gè)響應(yīng)式對(duì)象變成非響應(yīng)式。修改屬性值時(shí),數(shù)據(jù)會(huì)改變,視圖不會(huì)更新。
接受一個(gè)參數(shù):原始對(duì)象。
<template> <div> {{ man }} </div> <br /> <div> <button @click="change3">點(diǎn)擊3</button> </div> </template> <script setup lang="ts"> import { toRef, toRefs, reactive, toRaw } from 'vue' const man = reactive({ name: '張三', age: 18, like: '唱' }) const change3 = () => { // 手寫toRaw console.log(man['__v_raw']) // 調(diào)用toRaw console.log(toRaw(man)) } </script>
點(diǎn)擊前與點(diǎn)擊后頁面:
點(diǎn)擊后結(jié)果:
到此這篇關(guān)于vue3中toRef、toRefs和toRaw的使用的文章就介紹到這了,更多相關(guān)vue3 toRef toRefs toRaw內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue3?父控件遠(yuǎn)程獲取數(shù)據(jù)在子組件上顯示不出來的解決方案
這篇文章主要介紹了vue3?父控件遠(yuǎn)程獲取數(shù)據(jù),在子組件上顯示不出來,本文給大家分享兩種解決方案幫助大家解決這個(gè)問題,需要的朋友可以參考下2023-08-08淺談vue項(xiàng)目4rs vue-router上線后history模式遇到的坑
今天小編就為大家分享一篇淺談vue項(xiàng)目4rs vue-router上線后history模式遇到的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-09-09vue頭部導(dǎo)航動(dòng)態(tài)點(diǎn)擊處理方法
這篇文章主要介紹了vue頭部導(dǎo)航動(dòng)態(tài)點(diǎn)擊處理方法,文中通過一段示例代碼給大家介紹了vue實(shí)現(xiàn)動(dòng)態(tài)頭部的方法,需要的朋友可以參考下2018-11-11Nuxt pages下不同的頁面對(duì)應(yīng)layout下的頁面布局操作
這篇文章主要介紹了Nuxt pages下不同的頁面對(duì)應(yīng)layout下的頁面布局操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-11-11基于vue實(shí)現(xiàn)網(wǎng)站前臺(tái)的權(quán)限管理(前后端分離實(shí)踐)
這篇文章主要介紹了基于vue實(shí)現(xiàn)網(wǎng)站前臺(tái)的權(quán)限管理(前后端分離實(shí)踐),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-01-01