Vue3中的toRef和toRefs的區(qū)別和用法示例小結(jié)
Vue3中的toRef和toRefs的區(qū)別和用法
剛做了Ref和Reactive區(qū)別及使用方法筆記(見文末補(bǔ)充介紹),再來總結(jié)一下,toRef 和 toRefs 的作用、用法、區(qū)別
1、作用和區(qū)別
toRef 和 toRefs 可以用來復(fù)制 reactive 里面的屬性然后轉(zhuǎn)成 ref,而且它既保留了響應(yīng)式,也保留了引用,也就是你從 reactive 復(fù)制過來的屬性進(jìn)行修改后,除了視圖會更新,原有 ractive 里面對應(yīng)的值也會跟著更新。
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ù)類型,比如數(shù)字、字符串等。它將普通的數(shù)據(jù)變成響應(yīng)式數(shù)據(jù),可以監(jiān)聽數(shù)據(jù)的變化。使用Ref時(shí),我們可以通過.value來訪問和修改數(shù)據(jù)的值。
Reactive:Reactive則用于創(chuàng)建一個(gè)響應(yīng)式對象,可以包含多個(gè)屬性。通過Reactive,我們可以將整個(gè)對象變成響應(yīng)式,使對象的任何屬性發(fā)生變化時(shí)都能被檢測到。
2、ref使用場景
Ref:適用于管理簡單的單一數(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中訪問/修改需要使用.value
2、在模版中插值不需要使用.value
3、Reactive使用場景
使用Reactive實(shí)現(xiàn)管理用戶信息和訂單示例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)管理用戶信息和訂單示例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中是否使用展開運(yùn)算符的差別
到此這篇關(guān)于Vue3中的toRef和toRefs的區(qū)別和用法的文章就介紹到這了,更多相關(guān)Vue3 toRef和toRefs內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue2中的keep-alive使用總結(jié)及注意事項(xiàng)
vue2.0提供了一個(gè)keep-alive組件用來緩存組件,避免多次加載相應(yīng)的組件,減少性能消耗。本文給大家介紹vue2中的keep-alive使用總結(jié)及注意事項(xiàng),需要的朋友參考下吧2017-12-12
vue實(shí)現(xiàn)日歷表格(element-ui)
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)日歷表格(element-ui),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09
vue2.0在沒有dev-server.js下的本地?cái)?shù)據(jù)配置方法
這篇文章主要介紹了vue2.0在沒有dev-server.js下的本地?cái)?shù)據(jù)配置方法的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-02-02
Vue3根據(jù)動態(tài)字段綁定v-model的操作代碼
最近在學(xué)習(xí)vue技術(shù),開發(fā)表格的時(shí)候,想把表格做成組件,那查詢條件就需要動態(tài)生成,這就遇到一個(gè)問題,vue怎么動態(tài)給v-model變量值,本文通過實(shí)例代碼給大家介紹,對Vue3動態(tài)綁定v-model實(shí)例代碼感興趣的朋友一起看看吧2022-10-10

