vue3使用ref和reactive的示例詳解
Vue 3引入了兩個(gè)新的API,ref
和reactive
,用于創(chuàng)建響應(yīng)式對(duì)象。這兩個(gè)方法都位于Vue.prototype
上,因此可以在組件實(shí)例中直接使用。
ref
ref
函數(shù)用于創(chuàng)建一個(gè)響應(yīng)式引用對(duì)象。這個(gè)函數(shù)可以接受一個(gè)普通的變量或?qū)ο笞鳛閰?shù),并返回一個(gè)響應(yīng)式引用對(duì)象。要訪問(wèn)這個(gè)引用的值,需要使用.value
屬性。
例如:
const count = ref(0); console.log(count.value); // 0 count.value++; // 響應(yīng)式更新 console.log(count.value); // 1
在上面的例子中,我們使用ref
函數(shù)創(chuàng)建了一個(gè)響應(yīng)式引用對(duì)象,并將其初始值設(shè)置為0。然后,我們可以通過(guò).value
屬性來(lái)訪問(wèn)和修改這個(gè)引用的值。當(dāng)修改這個(gè)值時(shí),Vue會(huì)自動(dòng)更新相關(guān)的視圖。
reactive
reactive
函數(shù)用于創(chuàng)建一個(gè)響應(yīng)式對(duì)象。這個(gè)函數(shù)可以接受一個(gè)普通的對(duì)象作為參數(shù),并返回一個(gè)響應(yīng)式代理對(duì)象。這個(gè)代理對(duì)象會(huì)攔截所有的屬性訪問(wèn)和修改操作,并自動(dòng)更新相關(guān)的視圖。
例如:
const state = reactive({ count: 0 }); console.log(state.count); // 0 state.count++; // 響應(yīng)式更新 console.log(state.count); // 1
在上面的例子中,我們使用reactive
函數(shù)創(chuàng)建了一個(gè)響應(yīng)式對(duì)象,并將其初始值設(shè)置為一個(gè)包含count
屬性的對(duì)象。然后,我們可以通過(guò)直接訪問(wèn)和修改這個(gè)對(duì)象的屬性來(lái)觸發(fā)響應(yīng)式更新。與ref
不同的是,我們不需要使用.value
屬性來(lái)訪問(wèn)和修改這個(gè)對(duì)象的屬性。
Vue 3 使用 ref
和 reactive
創(chuàng)建響應(yīng)式對(duì)象的完整示例:
<template> <div> <p>{{ count }}</p> <button @click="increment">Increment</button> </div> </template> <script> import { ref, reactive } from 'vue'; export default { setup() { // 使用 ref 創(chuàng)建響應(yīng)式引用對(duì)象 const count = ref(1); // 使用 reactive 創(chuàng)建響應(yīng)式對(duì)象 const state = reactive({ count: 0, }); // 使用 increment 方法修改引用對(duì)象的值和響應(yīng)式對(duì)象的屬性值 const increment = () => { count.value++; // 修改引用對(duì)象的值 state.count++; // 修改響應(yīng)式對(duì)象的屬性值 }; return { count, state, increment, }; }, }; </script>
在上面的示例中,我們使用 ref
創(chuàng)建了一個(gè)名為 count
的響應(yīng)式引用對(duì)象,初始值為 1
。我們還使用 reactive
創(chuàng)建了一個(gè)名為 state
的響應(yīng)式對(duì)象,其中包含一個(gè)名為 count
的屬性,初始值為 0
。在 increment
方法中,我們通過(guò)調(diào)用 count.value++
和 state.count++
來(lái)修改引用對(duì)象的值和響應(yīng)式對(duì)象的屬性值。由于這些變量都是響應(yīng)式的,因此當(dāng)它們的值發(fā)生變化時(shí),相關(guān)的視圖也會(huì)自動(dòng)更新。
到此這篇關(guān)于vue3使用ref和reactive的文章就介紹到這了,更多相關(guān)vue3使用ref和reactive內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue使用axios進(jìn)行數(shù)據(jù)異步交互的方法
大家都知道在Vue里面有兩種出名的插件能夠支持發(fā)起異步數(shù)據(jù)傳輸和接口交互,分別是axios和vue-resource,同時(shí)vue更新到2.0之后,宣告不再對(duì)vue-resource更新,而是推薦的axios,今天就講一下怎么引入axios,需要的朋友可以參考下2024-01-01Vue Element 分組+多選+可搜索Select選擇器實(shí)現(xiàn)示例
這篇文章主要介紹了Vue Element 分組+多選+可搜索Select選擇器實(shí)現(xiàn)示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07vue實(shí)現(xiàn)導(dǎo)航欄效果(選中狀態(tài)刷新不消失)
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)導(dǎo)航欄效果,選中狀態(tài)刷新不消失,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12vue2.0嵌套路由實(shí)現(xiàn)豆瓣電影分頁(yè)功能(附demo)
這篇文章主要介紹了vue2.0嵌套路由實(shí)現(xiàn)豆瓣電影分頁(yè)功能(附demo),這里整理了詳細(xì)的代碼,有需要的小伙伴可以參考下。2017-03-03vue scroll滾動(dòng)判斷的實(shí)現(xiàn)(是否滾動(dòng)到底部、滾動(dòng)方向、滾動(dòng)節(jié)流、獲取滾動(dòng)區(qū)域dom元素)
這篇文章主要介紹了vue scroll滾動(dòng)判斷的實(shí)現(xiàn)(是否滾動(dòng)到底部、滾動(dòng)方向、滾動(dòng)節(jié)流、獲取滾動(dòng)區(qū)域dom元素),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06vue項(xiàng)目中一定會(huì)用到的性能優(yōu)化技巧
這篇文章主要為大家介紹了vue項(xiàng)目中一定會(huì)用到的性能優(yōu)化技巧實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07vuex實(shí)現(xiàn)及簡(jiǎn)略解析(小結(jié))
這篇文章主要介紹了vuex實(shí)現(xiàn)及簡(jiǎn)略解析(小結(jié)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-03-03項(xiàng)目中Axios二次封裝實(shí)例Demo
vue項(xiàng)目經(jīng)常會(huì)用到axios來(lái)請(qǐng)求數(shù)據(jù),那么首先肯定需要對(duì)這個(gè)請(qǐng)求方法進(jìn)行一個(gè)二次封裝,這篇文章主要給大家介紹了關(guān)于項(xiàng)目中Axios二次封裝的相關(guān)資料,需要的朋友可以參考下2021-06-06