vue3 reactive函數(shù)用法實(shí)戰(zhàn)教程
vue3 reactive函數(shù)用法
reactive的用法與ref的用法相似,也是將數(shù)據(jù)變成響應(yīng)式數(shù)據(jù),當(dāng)數(shù)據(jù)發(fā)生變化時UI也會自動更新。不同的是ref用于基本數(shù)據(jù)類型,而reactive是用于復(fù)雜數(shù)據(jù)類型,比如對象和數(shù)組
例如:定義一個對象類型的變量user
<template> <div> <p>{{ user }}</p> <button @click="increase">click me! one year later</button> </div> </template> <script> import { reactive } from "vue"; export default { name: "reactive", setup() { const user = reactive({ name: "Alice", age: 12 }); function increase() { ++user.age } return { user, increase }; }, }; </script>
如上,當(dāng)點(diǎn)擊按鈕時,讓數(shù)據(jù)user.age加1,當(dāng)Vue發(fā)現(xiàn)數(shù)據(jù)發(fā)生變化,UI會自動更新
那我們驗證了,確實(shí)reactive函數(shù)可以將一個復(fù)雜數(shù)據(jù)類型變成響應(yīng)式數(shù)據(jù)。我們不妨將reactive函數(shù)執(zhí)行的結(jié)果打印出來看下,看看它返回值是什么
reactive將傳遞的對象包裝成了proxy對象
我們發(fā)現(xiàn),reactive執(zhí)行結(jié)果是將傳遞的對象包裝成了proxy對象
接下來我們測試一下,如果傳遞基本數(shù)據(jù)類型呢?
<template> <div> <p>{{ userAge }}</p> <button @click="increase">click me! one year later</button> </div> </template> <script> import { reactive } from "vue"; export default { name: "reactive", setup() { let userAge = reactive(12); function increase() { console.log(userAge); ++userAge; } return { userAge, increase }; }, }; </script>
運(yùn)行發(fā)現(xiàn),基本數(shù)據(jù)傳遞給reactive,reactive并不會將它包裝成porxy對象,并且當(dāng)數(shù)據(jù)變化時,界面也不會變化
需要注意的是,reactive中傳遞的參數(shù)必須是json對象或者數(shù)組,如果傳遞了其他對象(比如new Date()),在默認(rèn)情況下修改對象,界面不會自動更新,如果也需要具有響應(yīng)式,可以通過重新賦值的方式實(shí)現(xiàn)
使用ref函數(shù)可以處理基本數(shù)據(jù),使期變成響應(yīng)式數(shù)據(jù)
Vue3中reactive的理解
1.什么是reactive?
- reactive是Vue3中提供實(shí)現(xiàn)響應(yīng)式數(shù)據(jù)的方法.
- 在Vue2中響應(yīng)式數(shù)據(jù)是通過defineProperty來實(shí)現(xiàn)的.
- 而在Vue3響應(yīng)式數(shù)據(jù)是通過ES6的Proxy來實(shí)現(xiàn)的
2.reactive注意點(diǎn)
- reactive參數(shù)必須是對象(json/arr)
- 如果給reactive傳遞了其他對象,默認(rèn)情況下修改對象,界面不會自動更新,如果想更新,可以通過重新賦值的方式.
錯誤示范
當(dāng)傳遞的是非對象時,頁面不會發(fā)生響應(yīng)
正確實(shí)例
arr正確實(shí)例
傳入數(shù)組會轉(zhuǎn)成proxy對象
到此這篇關(guān)于vue3 reactive函數(shù)用法的文章就介紹到這了,更多相關(guān)vue3 reactive函數(shù)用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue3?element-plus實(shí)現(xiàn)圖片預(yù)覽功能實(shí)例
這篇文章主要給大家介紹了關(guān)于vue3?element-plus實(shí)現(xiàn)圖片預(yù)覽功能的相關(guān)資料,在項目中我們經(jīng)常會碰到圖片預(yù)覽的功能需求,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09vue?內(nèi)置組件?component?的用法示例詳解
這篇文章主要介紹了vue內(nèi)置組件component的用法,本文給大家介紹了component內(nèi)置組件切換方法,通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08vue預(yù)覽 pdf、word、xls、ppt、txt文件的實(shí)現(xiàn)方法
這篇文章主要介紹了vue預(yù)覽 pdf、word、xls、ppt、txt文件的實(shí)現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04Slots Emit和Props穿透組件封裝實(shí)現(xiàn)摸魚加鐘
這篇文章主要為大家介紹了Slots Emit和Props穿透組件封裝實(shí)現(xiàn)示例詳解,為摸魚加個鐘,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08vue中父子組件相互傳值的實(shí)現(xiàn)方法詳解
父子組件通信是Vue中常見的場景,這篇文章主要為大家詳細(xì)介紹了vue中父子組件相互傳值的實(shí)現(xiàn)方法,文中的示例代碼講解詳細(xì),需要的小伙伴可以參考一下2023-12-12