Vue3中的toRef和toRefs的區(qū)別和用法示例小結(jié)
Vue3中的toRef和toRefs的區(qū)別和用法
剛做了Ref和Reactive區(qū)別及使用方法筆記(見(jiàn)文末補(bǔ)充介紹),再來(lái)總結(jié)一下,toRef
和 toRefs
的作用、用法、區(qū)別
1、作用和區(qū)別
toRef 和 toRefs 可以用來(lái)復(fù)制 reactive 里面的屬性然后轉(zhuǎn)成 ref,而且它既保留了響應(yīng)式,也保留了引用,也就是你從 reactive 復(fù)制過(guò)來(lái)的屬性進(jìn)行修改后,除了視圖會(huì)更新,原有 ractive 里面對(duì)應(yīng)的值也會(huì)跟著更新。
toRef
: 復(fù)制 reactive 里的單個(gè)屬性并轉(zhuǎn)成 reftoRefs
: 復(fù)制 reactive 里的所有屬性并轉(zhuǎn)成 ref
2、使用方式
2.1 toRef使用示例
<template> <h2> reactive-name: {{ user.name }} </h2> <h2> toRef-name: {{ uName }} </h2> <button @click="onChangeName">點(diǎn)擊</button> </template> <script> import { reactive, toRef } from 'vue' export default { setup() { let user = reactive({ name: 'zs', age: 18 }) // 復(fù)制 user 里的 name 屬性 let uName = toRef(user, 'name') // 更改 const onChangeName = () => { uName.value = 'ls' } return { user, uName, onChangeName } } } </script>
2.2 toRefs使用示例
<template> <h2> {{ name }} </h2> <h2> {{ age }} </h2> </template> <script> import { reactive, toRef } from 'vue' export default { setup() { let user = reactive({ name: 'zs', age: 18 }) return { ...toRefs(user), } } } </script>
補(bǔ)充:vue3響應(yīng)式:Ref和Reactive區(qū)別及使用方法
vue3響應(yīng)式:Ref和Reactive區(qū)別及使用方法
在Vue3中,Ref
和Reactive
是兩個(gè)實(shí)現(xiàn)響應(yīng)式編程的關(guān)鍵的API。
1、區(qū)別
Ref
:用于創(chuàng)建一個(gè)響應(yīng)式的基本數(shù)據(jù)類(lèi)型,比如數(shù)字、字符串等。它將普通的數(shù)據(jù)變成響應(yīng)式數(shù)據(jù),可以監(jiān)聽(tīng)數(shù)據(jù)的變化。使用Ref時(shí),我們可以通過(guò).value
來(lái)訪問(wèn)和修改數(shù)據(jù)的值。
Reactive
:Reactive則用于創(chuàng)建一個(gè)響應(yīng)式對(duì)象,可以包含多個(gè)屬性。通過(guò)Reactive,我們可以將整個(gè)對(duì)象變成響應(yīng)式,使對(duì)象的任何屬性發(fā)生變化時(shí)都能被檢測(cè)到。
2、ref使用場(chǎng)景
Ref
:適用于管理簡(jiǎn)單的單一數(shù)據(jù),如計(jì)數(shù)器、輸入框的值等。
使用ref實(shí)現(xiàn)計(jì)數(shù)器示例
<template> <div> <p>Count: {{ i }}</p> <button @click="increment">Increment</button> </div> </template> <script> import { ref } from 'vue'; setup(){ const i = ref(0); const increment = () => { i.value++; }; return{ i,increment } } </script>
注意
1、在js中訪問(wèn)/修改需要使用.value
2、在模版中插值不需要使用.value
3、Reactive使用場(chǎng)景
使用Reactive實(shí)現(xiàn)管理用戶(hù)信息和訂單示例1
<template> <div> <p>User Name: {{ user.name }}</p> <p>Age: {{ user.age }}</p> </div> </template> <script> import { reactive } from 'vue'; setup(){ const user = reactive({ name: 'Alice', age: 30 }); return{ user } } </script>
使用Reactive實(shí)現(xiàn)管理用戶(hù)信息和訂單示例2
<template> <div> <p>User Name: {{ name }}</p> <p>Age: {{ age }}</p> </div> </template> <script setup> import { reactive } from 'vue'; setup(){ const user = reactive({ name: 'Alice', age: 30 }); return{ ...toRefs(user) } } </script>
注意,return中是否使用展開(kāi)運(yùn)算符的差別
到此這篇關(guān)于Vue3中的toRef和toRefs的區(qū)別和用法的文章就介紹到這了,更多相關(guān)Vue3 toRef和toRefs內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在Vue3項(xiàng)目中集成CodeMirror創(chuàng)建SQL編輯器的方法詳解
在這篇文章中,我們將學(xué)習(xí)如何在 Vue 3 項(xiàng)目中集成 CodeMirror,以創(chuàng)建一個(gè)支持 SQL 語(yǔ)法高亮和自動(dòng)補(bǔ)全的代碼編輯器,需要的朋友可以參考下2025-04-04VUE PC端可拖動(dòng)懸浮按鈕的實(shí)現(xiàn)代碼
這篇文章主要介紹了VUE PC端可拖動(dòng)懸浮按鈕的實(shí)現(xiàn)代碼,通過(guò)實(shí)例代碼介紹了父頁(yè)面引用的方法,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02Vue在頁(yè)面右上角實(shí)現(xiàn)可懸浮/隱藏的系統(tǒng)菜單
這篇文章主要介紹了Vue在頁(yè)面右上角實(shí)現(xiàn)可懸浮/隱藏的系統(tǒng)菜單,實(shí)現(xiàn)思路大概是通過(guò)props將showCancel這個(gè)Boolean值傳遞到子組件,對(duì)父子組件分別綁定事件,來(lái)控制這個(gè)系統(tǒng)菜單的顯示狀態(tài)。需要的朋友可以參考下2018-05-05解決vue2+vue-router動(dòng)態(tài)路由添加及路由刷新后消失問(wèn)題
這篇文章主要介紹了解決vue2+vue-router動(dòng)態(tài)路由添加及路由刷新后消失問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08關(guān)于vue中watch檢測(cè)到不到對(duì)象屬性的變化的解決方法
本篇文章主要介紹了關(guān)于vue中watch檢測(cè)到不到對(duì)象屬性的變化的解決方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-02-02詳解vue結(jié)合el-table實(shí)現(xiàn)表格小計(jì)總計(jì)需求(summary-method)
這篇文章主要介紹了vue結(jié)合el-table實(shí)現(xiàn)表格小計(jì)總計(jì)需求(summary-method),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01vue3封裝數(shù)字滾動(dòng)組件的實(shí)現(xiàn)示例
本文主要介紹了vue3封裝數(shù)字滾動(dòng)組件的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08vue用Object.defineProperty手寫(xiě)一個(gè)簡(jiǎn)單的雙向綁定的示例
這篇文章主要介紹了用Object.defineProperty手寫(xiě)一個(gè)簡(jiǎn)單的雙向綁定的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07