Vue toRef toRefs toRaw函數(shù)使用示例
1. toRef
- 將一個(gè)對(duì)象中的屬性轉(zhuǎn)換成單獨(dú)的響應(yīng)式引用
- 接收兩個(gè)參數(shù):參數(shù)一 => 對(duì)象 參數(shù)二 => 屬性
- 轉(zhuǎn)換后的響應(yīng)式引用會(huì)跟蹤原始屬性的變化
- 轉(zhuǎn)換后的響應(yīng)式可以被用于計(jì)算屬性及監(jiān)聽(tīng)器中
使用toRef
函數(shù)
<template> <div class="wrapper"> <button @click="handleClick">修改</button> <div>countRef: {{ countRef }}</div> </div> </template> <script setup lang="ts"> import { reactive, toRef } from 'vue'; let obj = { name: '張三', count: 0 } let countRef = toRef(obj, 'count') const handleClick = () => { countRef.value++ console.log(countRef.value, 'countRef.value'); } </script> <style scoped> div { font-size: 28px; } </style>
原對(duì)象為非響應(yīng)式,改變后,值會(huì)改變,但頁(yè)面不會(huì)更新
原對(duì)象是響應(yīng)式,改變后,值改變,頁(yè)面也會(huì)更新
<template> <div class="wrapper"> <button @click="handleClick">修改</button> <div>countRef: {{ countRef }}</div> </div> </template> <script setup lang="ts"> import { reactive, toRef } from 'vue'; let obj = reactive({ name: '張三', count: 0 }) let countRef = toRef(obj, 'count') const handleClick = () => { countRef.value++ console.log(countRef.value, 'countRef.value'); } </script> <style scoped> div { font-size: 28px; } </style>
2. toRefs
- 將一個(gè)對(duì)象的所有屬性變成響應(yīng)式引用
- 接收一個(gè)對(duì)象
- 追蹤原對(duì)象的引用關(guān)系
- 原對(duì)象如果是響應(yīng)式的,那么修改值會(huì)更新,視圖會(huì)刷新
- 原對(duì)象如果非響應(yīng)式,那么修改值會(huì)更新,視圖不會(huì)更新
使用toRefs
函數(shù)
<template> <div> <button @click="handleClick">修改</button> <div>num: {{ num }}</div> <div>count: {{ count }}</div> <div>age: {{ age }}</div> </div> </template> <script setup lang="ts"> import { reactive, toRefs } from 'vue'; let obj = reactive({ num: 0, count: 0, age: 0 }) let { num, count, age } = toRefs(obj) const handleClick = () => { num.value++ console.log(num.value, 'num.value'); count.value++ console.log(count.value, 'count.value'); age.value++ console.log(age.value, 'age.value'); } </script> <style scoped> div { font-size: 28px; } </style>
3. toRaw
- 將一個(gè)響應(yīng)式對(duì)象變成非響應(yīng)式
- 修改值會(huì)更新,視圖不會(huì)刷新
使用toRaw
函數(shù)
<template> <div> <button @click="handleClick">修改</button> <div>num: {{ num }}</div> <div>count: {{ count }}</div> <div>age: {{ age }}</div> </div> </template> <script setup lang="ts"> import { reactive, toRaw } from 'vue'; let obj = reactive({ num: 0, count: 0, age: 0 }) let { num, count, age } = toRaw(obj) const handleClick = () => { num++ console.log(num, 'num'); count++ console.log(count, 'count'); age++ console.log(age, 'age'); } </script> <style scoped> div { font-size: 28px; } </style>
總結(jié):這篇文章介紹了Vue3中將響應(yīng)式對(duì)象的屬性轉(zhuǎn)換為響應(yīng)式引用的toRef
函數(shù)和用于將多個(gè)響應(yīng)式對(duì)象的屬性轉(zhuǎn)換為響應(yīng)式引用的toRefs
函數(shù),以及用于獲取響應(yīng)式對(duì)象的原始對(duì)象的toRaw
函數(shù)。這些函數(shù)可以幫助我們快速創(chuàng)建響應(yīng)式數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)的自動(dòng)更新。需要注意的是,使用toRaw
函數(shù)獲取一個(gè)響應(yīng)式對(duì)象的原始對(duì)象是不推薦的做法,因?yàn)樵紝?duì)象不具備響應(yīng)式的特性,對(duì)原始對(duì)象的修改不會(huì)觸發(fā)相應(yīng)的依賴更新。
到此這篇關(guān)于Vue toRef toRefs toRaw函數(shù)使用示例的文章就介紹到這了,更多相關(guān)Vue toRef toRefs toRaw內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在Echarts圖中給坐標(biāo)軸加一個(gè)標(biāo)識(shí)線markLine
這篇文章主要介紹了在Echarts圖中給坐標(biāo)軸加一個(gè)標(biāo)識(shí)線markLine,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07vue3+vite使用vite-plugin-svg-icons插件顯示本地svg圖標(biāo)的方法
這篇文章主要介紹了vue3+vite使用vite-plugin-svg-icons插件顯示本地svg圖標(biāo)的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-12-12使用vue如何構(gòu)建一個(gè)自動(dòng)建站項(xiàng)目
這篇文章主要介紹了使用vue如何構(gòu)建一個(gè)自動(dòng)建站項(xiàng)目,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-02-02vue+element-ui+axios實(shí)現(xiàn)圖片上傳
這篇文章主要為大家詳細(xì)介紹了vue+element-ui+axios實(shí)現(xiàn)圖片上傳,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08vue中axios的封裝問(wèn)題(簡(jiǎn)易版攔截,get,post)
這篇文章主要介紹了vue中axios的封裝問(wèn)題(簡(jiǎn)易版攔截,get,post),需要的朋友可以參考下2018-06-06Vue+Element實(shí)現(xiàn)表格單元格編輯
這篇文章主要為大家詳細(xì)介紹了Vue+Element實(shí)現(xiàn)表格單元格編輯,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04vue實(shí)現(xiàn)多條件篩選超簡(jiǎn)潔代碼
這篇文章主要給大家介紹了關(guān)于vue實(shí)現(xiàn)多條件篩選的相關(guān)資料,隨著數(shù)據(jù)的不斷增多,我們往往需要在表格中進(jìn)行多條件的篩選,以便快速定位符合我們需求的數(shù)據(jù),需要的朋友可以參考下2023-09-09vue中更改數(shù)組中屬性,在頁(yè)面中不生效的解決方法
今天小編就為大家分享一篇vue中更改數(shù)組中屬性,在頁(yè)面中不生效的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10vue 運(yùn)用mock數(shù)據(jù)的示例代碼
本篇文章主要介紹了vue 運(yùn)用mock數(shù)據(jù)的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11