vue3 reactive函數(shù)用法實戰(zhàn)教程
vue3 reactive函數(shù)用法
reactive的用法與ref的用法相似,也是將數(shù)據(jù)變成響應式數(shù)據(jù),當數(shù)據(jù)發(fā)生變化時UI也會自動更新。不同的是ref用于基本數(shù)據(jù)類型,而reactive是用于復雜數(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>
如上,當點擊按鈕時,讓數(shù)據(jù)user.age加1,當Vue發(fā)現(xiàn)數(shù)據(jù)發(fā)生變化,UI會自動更新
那我們驗證了,確實reactive函數(shù)可以將一個復雜數(shù)據(jù)類型變成響應式數(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>
運行發(fā)現(xiàn),基本數(shù)據(jù)傳遞給reactive,reactive并不會將它包裝成porxy對象,并且當數(shù)據(jù)變化時,界面也不會變化
需要注意的是,reactive中傳遞的參數(shù)必須是json對象或者數(shù)組,如果傳遞了其他對象(比如new Date()),在默認情況下修改對象,界面不會自動更新,如果也需要具有響應式,可以通過重新賦值的方式實現(xiàn)
使用ref函數(shù)可以處理基本數(shù)據(jù),使期變成響應式數(shù)據(jù)
Vue3中reactive的理解
1.什么是reactive?
- reactive是Vue3中提供實現(xiàn)響應式數(shù)據(jù)的方法.
- 在Vue2中響應式數(shù)據(jù)是通過defineProperty來實現(xiàn)的.
- 而在Vue3響應式數(shù)據(jù)是通過ES6的Proxy來實現(xiàn)的
2.reactive注意點
- reactive參數(shù)必須是對象(json/arr)
- 如果給reactive傳遞了其他對象,默認情況下修改對象,界面不會自動更新,如果想更新,可以通過重新賦值的方式.
錯誤示范
當傳遞的是非對象時,頁面不會發(fā)生響應
正確實例
arr正確實例
傳入數(shù)組會轉(zhuǎn)成proxy對象
到此這篇關(guān)于vue3 reactive函數(shù)用法的文章就介紹到這了,更多相關(guān)vue3 reactive函數(shù)用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue3?element-plus實現(xiàn)圖片預覽功能實例
這篇文章主要給大家介紹了關(guān)于vue3?element-plus實現(xiàn)圖片預覽功能的相關(guān)資料,在項目中我們經(jīng)常會碰到圖片預覽的功能需求,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下2023-09-09vue?內(nèi)置組件?component?的用法示例詳解
這篇文章主要介紹了vue內(nèi)置組件component的用法,本文給大家介紹了component內(nèi)置組件切換方法,通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08vue預覽 pdf、word、xls、ppt、txt文件的實現(xiàn)方法
這篇文章主要介紹了vue預覽 pdf、word、xls、ppt、txt文件的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04Slots Emit和Props穿透組件封裝實現(xiàn)摸魚加鐘
這篇文章主要為大家介紹了Slots Emit和Props穿透組件封裝實現(xiàn)示例詳解,為摸魚加個鐘,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08