Vue創(chuàng)建淺層響應(yīng)式數(shù)據(jù)的實(shí)例詳解
shallowReactive:只處理對象第一層數(shù)據(jù)的響應(yīng)式(淺響應(yīng)式)。
shallowRef:只處理基本數(shù)據(jù)類型的響應(yīng)式,不處理對象類型的響應(yīng)式。
shallowReactive 適用于:如果有一個(gè)對象類型的數(shù)據(jù),結(jié)構(gòu)比較深,但變化時(shí)只是外層屬性會變化。
shallowRef 適用于:如果有一個(gè)對象類型的數(shù)據(jù),后續(xù)功能不會修改該對象中的屬性,而是生成新的對象來替換。
只考慮第一層數(shù)據(jù)的響應(yīng)式 shallowReactive 函數(shù):
<template>
<h2>姓名:{{ info.name }}</h2>
<h2>年齡:{{ info.age }}</h2>
<h2>薪資:{{ info.job.money }}</h2>
<button @click="info.name += '風(fēng)'">修改姓名</button>
<button @click="info.age++">修改年齡</button>
<button @click="info.job.money++">增加薪資</button>
</template>
<script>
// 引入 shallowReactive 函數(shù)
import { shallowReactive } from 'vue'
export default {
name: "Home",
setup() {
// 只考慮第一層數(shù)據(jù)的響應(yīng)式
let info = shallowReactive({
name: "張三",
age: 18,
job: {
money: 20
}
})
// 返回?cái)?shù)據(jù)
return { info }
}
}
</script>注:使用 shallowReactive 創(chuàng)建的數(shù)據(jù),只有第一層是響應(yīng)式的,深層數(shù)據(jù)修改后,頁面不會實(shí)時(shí)更新。

只考慮基本數(shù)據(jù)類型的響應(yīng)式 shallowRef 函數(shù) :
<template>
<h2>數(shù)字:{{ sum }}</h2>
<button @click="sum++">數(shù)據(jù)+1</button>
<hr />
<h2>姓名:{{ info.name }}</h2>
<button @click="info = { name: '李四' }">修改姓名</button>
<hr />
<h2>年齡:{{ user.age }}</h2>
<button @click="user.age++">增加年齡</button>
</template>
<script>
// 引入 shallowRef 函數(shù)
import { shallowRef } from 'vue'
export default {
name: "Home",
setup() {
// 只處理基本數(shù)據(jù)類型的響應(yīng)式
let sum = shallowRef(10);
// 直接替換這個(gè)對象時(shí),頁面也會更新
let info = shallowRef({
name: "張三"
})
// 不處理對象類型的響應(yīng)式
let user = shallowRef({
age: 18
})
// 返回?cái)?shù)據(jù)
return { sum, info, user }
}
}
</script>注:使用 shallowRef 創(chuàng)建基礎(chǔ)數(shù)據(jù)類型是響應(yīng)式的,創(chuàng)建對象數(shù)據(jù)類型就不是響應(yīng)式的了。但可以直接替換這個(gè)對象,頁面也會實(shí)時(shí)更新。

到此這篇關(guān)于Vue創(chuàng)建淺層響應(yīng)式數(shù)據(jù)的文章就介紹到這了,更多相關(guān)Vue響應(yīng)式數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Vue3關(guān)于響應(yīng)式數(shù)據(jù)類型詳解(ref、reactive、toRef、及toRefs)
- vue3中如何使用ref和reactive定義和修改響應(yīng)式數(shù)據(jù)(最新推薦)
- Vue.js響應(yīng)式數(shù)據(jù)的簡單實(shí)現(xiàn)方法(一看就會)
- Vue.js中provide/inject實(shí)現(xiàn)響應(yīng)式數(shù)據(jù)更新的方法示例
- Vue實(shí)現(xiàn)雙向綁定的原理以及響應(yīng)式數(shù)據(jù)的方法
- 談?wù)剬ue響應(yīng)式數(shù)據(jù)更新的誤解
相關(guān)文章
使用Vue-cli3.0創(chuàng)建的項(xiàng)目 如何發(fā)布npm包
這篇文章主要介紹了使用Vue-cli3.0創(chuàng)建的項(xiàng)目,如何發(fā)布npm包,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10
Vue實(shí)現(xiàn)手機(jī)橫屏效果的代碼示例
有時(shí)候一些頁面希望在手機(jī)上可以實(shí)現(xiàn)橫屏的效果,比如播放頁面,所以本文我們講給大家介紹Vue如何實(shí)現(xiàn)手機(jī)橫屏效果,文章通過代碼示例介紹的非常詳細(xì),感興趣的同學(xué)跟著小編一起來看看吧2023-08-08
全局安裝 Vue cli3 和 繼續(xù)使用 Vue-cli2.x操作
這篇文章主要介紹了全局安裝 Vue cli3 和 繼續(xù)使用 Vue-cli2.x操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
Vue項(xiàng)目pdf(base64)轉(zhuǎn)圖片遇到的問題及解決方法
這篇文章主要介紹了Vue項(xiàng)目pdf(base64)轉(zhuǎn)圖片遇到的問題及解決方法,需要的朋友可以參考下2018-10-10
vue-openlayers實(shí)現(xiàn)地圖坐標(biāo)彈框效果
這篇文章主要為大家詳細(xì)介紹了vue-openlayers實(shí)現(xiàn)地圖坐標(biāo)彈框效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09
解決element-ui el-input賦值后不能編輯的問題
這篇文章主要介紹了解決element-ui el-input賦值后不能編輯的問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
詳解vue服務(wù)端渲染瀏覽器端緩存(keep-alive)
在使用服務(wù)器端渲染時(shí),除了服務(wù)端的接口緩存、頁面緩存、組建緩存等,瀏覽器端也避免不了要使用緩存,減少頁面的重繪。這篇文章主要介紹了詳解vue服務(wù)端渲染瀏覽器端緩存(keep-alive),感興趣的小伙伴們可以參考一下2018-10-10

