最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue3 響應(yīng)式 API 及 reactive 和 ref 的用法示例詳解

 更新時間:2023年06月21日 11:42:26   作者:黛琳ghz  
響應(yīng)式是一種允許以聲明式的方式去適應(yīng)變化的編程范例,這篇文章主要介紹了關(guān)于Vue3響應(yīng)式API及reactive和ref的用法,需要的朋友可以參考下

??前言

這篇文章記錄一下 Vue3 響應(yīng)式的內(nèi)容,其中還包括了 reactiveref 的用法。響應(yīng)式是一種允許以聲明式的方式去適應(yīng)變化的編程范例,接下來我們一起看看。

??關(guān)于響應(yīng)式

Vue 框架的特點之一就是響應(yīng)式。Vue 2.x 是基于 Object.defineProperty() 方法實現(xiàn)響應(yīng)式。但是 Object.defineProperty() 方法有一定的局限性,例如 Object.defineProperty() 無法監(jiān)聽對象屬性的新增。為了克服解決這種缺陷,Vue3.x 版本引入 Proxy 對象來實現(xiàn)響應(yīng)式。

Proxy 不僅可以監(jiān)聽到屬性的變化和刪除,同時還支持代理復(fù)雜的數(shù)據(jù)結(jié)構(gòu),例如 Map 、Set 、Symbol 等等。但是 Proxy 也是缺點,就是不兼容 IE 11(實際開發(fā)中如果要求程序員兼容 IE ,他可能反手就紅溫了hhh)。言歸正傳,如果要考慮兼容 IE 11 的問題,可以使用 Vue 2.x 版本來開發(fā)。

??reactive 的用法

Vuereactive() 方法通過接收一個對象,返回對象的響應(yīng)式副本,我們可以看看下面這段代碼。

<template>
  <p>
    響應(yīng)式Count: {{ reactiveCount.count }}
    <button @click="reactiveCount.count++">++</button>
  </p>
</template>
<script setup lang="ts">
import { reactive } from "vue";
interface CountObject {
  count: number;
}
const reactiveCount = reactive<CountObject>({ count: 0 });
</script>

這里通過 reactive() 方法將 { count: 0 }對象封裝成一個響應(yīng)式對象,并且可以通過點擊頁面中的按鈕來動態(tài)實現(xiàn)數(shù)據(jù)更新,運(yùn)行效果如下圖 (項目剛創(chuàng)建的,路有什么的沒配置,忽略無關(guān)內(nèi)容)

reactive() 方法封裝對象成為響應(yīng)式并不僅僅是一層,而是深層轉(zhuǎn)換。如果想要在 script 模板中修改對象某個屬性的值,直接訪問進(jìn)行修改即可。代碼如下。

<template>
  <p>學(xué)生: {{ student.name }}</p>
  <p>成績: {{ student.test_socre.name }} | {{ student.test_socre.score }}分</p>
  <button @click="rest">rest mark</button>
</template>
<script setup lang="ts">
import { reactive } from "vue";
interface Student {
  name: string;
  test_socre: {
    name: string;
    score: number;
  };
}
const student = reactive<Student>({
  name: "ghz",
  test_socre: {
    name: "C語言",
    score: 98,
  },
});
const rest = () => {
  student.test_socre.score = 0;
};
</script>

點擊按鈕后,分?jǐn)?shù)重置。

這里 reactive() 將一個比較復(fù)雜的對象轉(zhuǎn)換成了響應(yīng)式對象,通過點擊按鈕,調(diào)用 rest 方法,將 student 對象中的 test_score 下的 score 重置為 0 分。同時,在方法內(nèi)部,可以直接訪問對象的屬性進(jìn)行修改數(shù)值。

??ref 的用法

Vue 3.x 中,ref() 負(fù)責(zé)將基本數(shù)據(jù)類型的數(shù)據(jù)封裝成響應(yīng)式數(shù)據(jù)。在所使用的 TypeScript 中,基本數(shù)據(jù)類型有:String 、Number 、Boolean 、Bigint 、SymbolUndefined 、Null。

ref() 負(fù)責(zé)接受上述類型的數(shù)組返回一個響應(yīng)式而且可變的 ref 對象,如果要獲取其中的值,需要訪問對象的 .value 屬性來獲取。我們可以看看下面這段代碼。

<template>
  <div></div>
</template>
<script setup lang="ts">
import { ref } from "vue";
const str = ref<string>("hello");
const num = ref<number>(123);
const bool = ref<boolean>(true);
const bigint = ref<bigint>(9007199254740991n);
const symbolObject = Symbol("foo");
const symb = ref<symbol>(symbolObject);
const und = ref<undefined>(undefined);
const nul = ref<null>(null);
console.log(str.value); // hello
console.log(num.value); // 123
console.log(bool.value); // true
console.log(bigint.value); // 9007199254740991nX
console.log(typeof symb.value); // symbol
console.log(symb.value); // Symbol(foo)
console.log(und.value); // undefined
console.log(nul.value); // null
</script>

從上面的這段代碼中可以看到,如果想要在 script 模板中讀取或者修改 ref 對象的值,需要從 .value 屬性中獲得。在模板中可以直接通過插值表達(dá)式讀取出來。這里需要注意的是 ref 是響應(yīng)式對象,所以一旦 ref.value 屬性值被修改,那么對應(yīng)的頁面模板也會重新渲染。

reactive() 負(fù)責(zé)封裝對象變量,ref() 負(fù)責(zé)封裝基礎(chǔ)數(shù)據(jù)類型變量,這兩個方法是 Vue3 最常見也最重要的命令之一。

??最后

以上就是這篇文章的全部內(nèi)容了,通過這篇文章,我們可以簡單了解學(xué)習(xí) Vue3 響應(yīng)式的內(nèi)容,通過實際案例我們也學(xué)習(xí)了 reactiveref 的用法。

到此這篇關(guān)于關(guān)于 Vue3 響應(yīng)式 API 以及 reactive 和 ref 的用法的文章就介紹到這了,更多相關(guān)Vue3 reactive 和 ref 的用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue二次封裝一個高頻可復(fù)用組件的全過程

    vue二次封裝一個高頻可復(fù)用組件的全過程

    在開發(fā)Vue項目我們一般使用第三方UI組件庫進(jìn)行開發(fā),但是這些組件提供的接口并不一定滿足我們的需求,這時我們可以通過對組件庫組件的二次封裝,來滿足我們特殊的需求,這篇文章主要給大家介紹了關(guān)于vue二次封裝一個高頻可復(fù)用組件的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • Vue2?響應(yīng)式系統(tǒng)之異步隊列

    Vue2?響應(yīng)式系統(tǒng)之異步隊列

    這篇文章主要介紹了Vue2?響應(yīng)式系統(tǒng)之異步隊列,文章基于Vue2?的相關(guān)資料展開對主題的詳細(xì)介紹,具有一定的參考價值需要的小伙伴可以參考一下
    2022-04-04
  • Vue實現(xiàn)隨機(jī)驗證碼功能

    Vue實現(xiàn)隨機(jī)驗證碼功能

    這篇文章主要為大家詳細(xì)介紹了Vue實現(xiàn)隨機(jī)驗證碼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • 解決創(chuàng)建vue項目后沒有vue.config.js文件的問題

    解決創(chuàng)建vue項目后沒有vue.config.js文件的問題

    這篇文章給大家主要介紹如何解決創(chuàng)建vue項目后沒有webpack.config.js(vue.config.js)文件,文中有詳細(xì)的解決方法,感興趣的朋友可以參考閱讀下
    2023-07-07
  • Vue讓router-view默認(rèn)顯示頁面操作方法

    Vue讓router-view默認(rèn)顯示頁面操作方法

    一個home頁面,點擊左邊的菜單欄,右邊顯示頁面,因此都知道在右邊放一個router-view然后配置路由即可,然而問題出現(xiàn)在:重新打開的時候,默認(rèn)是白色空的,遇到這樣的問題如何解決呢,下面小編給大家分享Vue讓router-view默認(rèn)顯示頁面操作方法,感興趣的朋友一起看看吧
    2024-03-03
  • 詳解如何在vue-cli中使用vuex

    詳解如何在vue-cli中使用vuex

    這篇文章主要介紹了詳解如何在vue-cli中使用vuex,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Vue3+TypeScript報錯:無法找到模塊xx的聲明文件問題

    Vue3+TypeScript報錯:無法找到模塊xx的聲明文件問題

    這篇文章主要介紹了Vue3+TypeScript報錯:無法找到模塊xx的聲明文件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • vue管理系統(tǒng)項目中的一些核心技能匯總

    vue管理系統(tǒng)項目中的一些核心技能匯總

    Vue是當(dāng)今增長最快的前端框架,Vue 平易近人、用途廣泛且性能卓越,它的語法非常直觀,并且具有友好的學(xué)習(xí)曲線,是開發(fā)人員最想學(xué)習(xí)的頂級前端庫之一,下面這篇文章主要給大家介紹了關(guān)于vue管理系統(tǒng)項目中的一些核心技能,需要的朋友可以參考下
    2022-05-05
  • Vue-cli搭建spa項目的項目實踐

    Vue-cli搭建spa項目的項目實踐

    本文主要介紹了Vue-cli搭建spa項目的項目實踐,首先,你需要安裝Vue CLI,然后通過它創(chuàng)建新項目,接著,選擇和配置適當(dāng)?shù)牟寮鸵蕾図?以完善你的SPA項目,感興趣的可以了解一下
    2023-09-09
  • 淺析Vue 防抖與節(jié)流的使用

    淺析Vue 防抖與節(jié)流的使用

    防抖節(jié)流就是使用定時器 來實現(xiàn)我們的目的。這篇文章通過實例代碼給大家介紹vue防抖與節(jié)流的使用,感興趣的朋友跟隨小編一起看看吧
    2019-11-11

最新評論

长丰县| 抚州市| 景洪市| 涿鹿县| 安国市| 和平县| 莱西市| 方山县| 凤翔县| 略阳县| 清原| 滦平县| 思南县| 梁河县| 班戈县| 靖江市| 大姚县| 榆树市| 通许县| 平山县| 峡江县| 修文县| 金阳县| 龙口市| 海丰县| 东阳市| 湘阴县| 余庆县| 囊谦县| 馆陶县| 鄂伦春自治旗| 石家庄市| 搜索| 抚顺市| 松溪县| 康马县| 和田市| 金坛市| 乌海市| 乌审旗| 鄂托克前旗|