国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue3-響應(yīng)式基礎(chǔ)之ref

這篇具有很好參考價值的文章主要介紹了vue3-響應(yīng)式基礎(chǔ)之ref。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

聲明響應(yīng)式狀態(tài)

ref()

在組合式 API 中,推薦使用 ref() 函數(shù)來聲明響應(yīng)式狀態(tài): ref() 接收參數(shù),并將其包裹在一個帶有 .value 屬性的 ref 對象中返回:

import?{?ref?}?from?'vue'
const?count?=?ref(0)

console.log(count)?//?{?value:?0?}
console.log(count.value)?//?0

count.value++
console.log(count.value)?//?1

形式1 setup() 函數(shù)

  1. 要在組件模板中訪問 ref,請從組件的 setup() 函數(shù)中聲明并返回它們:

<script?lang="ts"?>
import?{?ref?}?from?'vue'

export?default?{
????setup()?{
????????const?count?=?ref(0)

????????function?increment()?{
????????????//?在?JavaScript?中需要?.value
????????????count.value++
????????}

????????//?不要忘記同時暴露?increment?函數(shù)
????????return?{
????????????count,
????????????increment
????????}
????}
}
</script>

<template>
????<div?class="container">
????????<div>{{?count?}}</div>
????????<button?@click="count++">
????????????{{?count?}}
????????</button>
????</div>
</template>

<style??scoped>
.container?{}
</style>
  1. 注意,在模板中使用 ref 時,我們不需要附加 .value。為了方便起見,當(dāng)在模板中使用時,ref 會自動解包 (有一些注意事項)。

在模板渲染上下文中,只有頂級的 ref 屬性才會被解包。

在下面的例子中,count 和 object 是頂級屬性,但 object.id 不是:

const?count?=?ref(0)
const?object?=?{?id:?ref(1)?}

//模版正常渲染執(zhí)行
{{?count?+?1?}}?

//模版不會正常渲染非頂級不會被解包仍然是一個ref
{{?object.id?+?1?}}??對象


//我們可以將?id?解構(gòu)為一個頂級屬性
const?{?id?}?=?object
{{?id?+?1?}}???//模版正常渲染并執(zhí)行

//模版自動解包
{{?object.id?}}
該特性僅僅是文本插值的一個便利特性,等價于?{{?object.id.value?}}

形式2 <script setup>

  • 在 setup() 函數(shù)中手動暴露大量的狀態(tài)和方法非常繁瑣。

  • 幸運(yùn)的是,我們可以通過使用單文件組件 (SFC) 來避免這種情況。我們可以使用 <script setup> 來大幅度地簡化代碼:

<script?setup?lang="ts">
import?{?ref?}?from?'vue'

const?count?=?ref(0)

function?increment()?{
????count.value++
}
</script>

<template>
????<button?@click="increment">
????????{{?count?}}
????</button>
</template>

深層響應(yīng)性

  • Ref 可以持有任何類型的值,包括深層嵌套的對象、數(shù)組或者 JavaScript 內(nèi)置的數(shù)據(jù)結(jié)構(gòu),比如 Map。

  • Ref 會使它的值具有深層響應(yīng)性。這意味著即使改變嵌套對象或數(shù)組時,變化也會被檢測到:

<script?setup?lang="ts">
import?{?ref?}?from?'vue'

const?count?=?ref(0)
const?obj?=?ref({
????nested:?{?count:?0?},
????arr:?['foo',?'bar']
})

function?mutateDeeply()?{
????//?以下都會按照期望工作
????obj.value.nested.count++
????obj.value.arr.push('baz')
}


function?increment()?{
????count.value++
}
</script>

<template>
????{{?obj.arr?}}
????<button?@click="mutateDeeply">
????????{{?obj.nested.count?+?1?}}
????</button>
</template>

shallow ref

可以通過 shallow ref 來放棄深層響應(yīng)性

  1. 減少大型不可變數(shù)據(jù)的響應(yīng)性開銷

  2. 與外部狀態(tài)系統(tǒng)集成

DOM 更新時機(jī)

  • 當(dāng)你修改了響應(yīng)式狀態(tài)時,DOM 會被自動更新。但是需要注意的是,DOM 更新不是同步的。

  • Vue 會在“next tick”更新周期中緩沖所有狀態(tài)的修改,以確保不管你進(jìn)行了多少次狀態(tài)修改,每個組件都只會被更新一次。

要等待 DOM 更新完成后再執(zhí)行額外的代碼,可以使用 nextTick() 全局 API:文章來源地址http://www.zghlxwxcb.cn/news/detail-802606.html

<script?setup?lang="ts">
import?{?ref?}?from?'vue'
import?{?nextTick?}?from?'vue'

const?count?=?ref(0)

async?function?increment()?{
????count.value++

????console.log(document.querySelector('button')?.textContent);
????//?這里會立即打印?'0'
????await?nextTick()
????//?現(xiàn)在?DOM?已經(jīng)更新了
????console.log(document.querySelector('button')?.textContent);
????//?這里會立即打印?'1'
}
</script>

<template>
????<button?@click="increment">
????????{{?count?}}
????</button>
</template>

到了這里,關(guān)于vue3-響應(yīng)式基礎(chǔ)之ref的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Vue3】使用ref與reactive創(chuàng)建響應(yīng)式對象

    【Vue3】使用ref與reactive創(chuàng)建響應(yīng)式對象

    ??????歡迎來到我的博客,你將找到有關(guān)如何使用技術(shù)解決問題的文章,也會找到某個技術(shù)的學(xué)習(xí)路線。無論你是何種職業(yè),我都希望我的博客對你有所幫助。最后不要忘記訂閱我的博客以獲取最新文章,也歡迎在文章下方留下你的評論和反饋。我期待著與你分享知識、互

    2024年02月21日
    瀏覽(24)
  • Vue3通透教程【五】Vue3中的響應(yīng)式數(shù)據(jù) reactive函數(shù)、ref函數(shù)

    專欄介紹: 涼哥作為 Vue 的忠實(shí)粉絲輸出過大量的 Vue 文章,應(yīng)粉絲要求開始更新 Vue3 的相關(guān)技術(shù)文章,Vue 框架目前的地位大家應(yīng)該都曉得,所謂三大框架使用人數(shù)最多,公司選型最多的框架,涼哥之前在文章中也提到過就是 Vue 框架之所以火起來的原因,和 Vue 框架相比其他

    2024年01月24日
    瀏覽(27)
  • Vue3中的Ref與Reactive:深入理解響應(yīng)式編程

    Vue 3是一個功能強(qiáng)大的前端框架,它引入了一些令人興奮的新特性,其中最引人注目的是 ref 和 reactive 。這兩個API是Vue 3中響應(yīng)式編程的核心,本文將深入探討它們的用法和差異。 在Vue中,響應(yīng)式編程是一種使數(shù)據(jù)與UI保持同步的方式。當(dāng)數(shù)據(jù)變化時,UI會自動更新,反之亦然

    2024年02月08日
    瀏覽(31)
  • 關(guān)于 Vue3 響應(yīng)式 API 以及 reactive 和 ref 的用法

    關(guān)于 Vue3 響應(yīng)式 API 以及 reactive 和 ref 的用法

    這篇文章記錄一下 Vue3 響應(yīng)式的內(nèi)容,其中還包括了 reactive 和 ref 的用法。響應(yīng)式是一種允許以聲明式的方式去適應(yīng)變化的編程范例,接下來我們一起看看。 Vue 框架的特點(diǎn)之一就是響應(yīng)式。 Vue 2.x 是基于 Object.defineProperty() 方法實(shí)現(xiàn)響應(yīng)式。但是 Object.defineProperty() 方法有一定

    2024年02月12日
    瀏覽(31)
  • 【Vue學(xué)習(xí)筆記5】Vue3中的響應(yīng)式:ref和reactive、watchEffect和watch

    【Vue學(xué)習(xí)筆記5】Vue3中的響應(yīng)式:ref和reactive、watchEffect和watch

    所謂響應(yīng)式就是界面和數(shù)據(jù)同步,能實(shí)現(xiàn)實(shí)時更新。 Vue 中用過三種響應(yīng)式解決方案,分別是 defineProperty、Proxy 和 value setter。Vue 2 使用的方案是 defineProperty API。Vue3中使用的方案是Proxy和value setter。 vue3中實(shí)現(xiàn)響應(yīng)式數(shù)據(jù)的方法是使用ref和reactive。 reactive更推薦去定義復(fù)雜的數(shù)

    2024年02月03日
    瀏覽(33)
  • 【前端】VUE3使用$ref()糖語法 去除.value

    Reactivity Transform | Vue Macros (sxzz.moe)

    2024年02月12日
    瀏覽(57)
  • vue3前端開發(fā),自學(xué)一下reactive,ref的差異是什么。

    vue3前端開發(fā),自學(xué)一下reactive,ref的差異是什么。

    vue3前端開發(fā),自學(xué),學(xué)習(xí)一下,reactive和ref的差別。以及基礎(chǔ)用法。 前言,這2個東西,都能對外輸出動態(tài)的數(shù)據(jù)對象。但是,有點(diǎn)區(qū)別,是,reactive只支持輸入一個對象作為參數(shù),ref則還可以支持簡單的數(shù)據(jù)信息作為參數(shù)。待會有案例代碼展示。 下面看看代碼內(nèi)容。第一個

    2024年01月18日
    瀏覽(29)
  • Web前端 ---- 【Vue3】Proxy響應(yīng)式原理

    Web前端 ---- 【Vue3】Proxy響應(yīng)式原理

    目錄 前言 安裝Vue3項目 安裝 Proxy 語法格式 從本文開始進(jìn)入vue3的學(xué)習(xí)。本文介紹vue3中的響應(yīng)式原理,相較于vue2中通過object.defineProperty(vue2中的響應(yīng)式)來實(shí)現(xiàn)響應(yīng)式,vue3中換成了Proxy來進(jìn)行實(shí)現(xiàn)。 相較于vue2通過vue-cli腳手架來創(chuàng)建項目,這里更推薦使用create-vue來創(chuàng)建vue3的

    2024年01月16日
    瀏覽(64)
  • 前端系列19集-vue3引入高德地圖,響應(yīng)式,自適應(yīng)

    前端系列19集-vue3引入高德地圖,響應(yīng)式,自適應(yīng)

    npm i @amap/amap-jsapi-loader --save 要在Vue 3中引入高德地圖,你可以按照以下步驟進(jìn)行操作: 在項目目錄中使用npm或yarn安裝高德地圖的JavaScript API庫。你可以使用以下命令之一: npm install @amap/amap-jsapi-loader yarn add @amap/amap-jsapi-loader 在Vue組件中引入并使用高德地圖。 在你的Vue組件中

    2024年02月07日
    瀏覽(20)
  • Web前端 ---- 【Vue3】computed計算屬性和watch偵聽屬性(偵聽被ref和reactive包裹的數(shù)據(jù))

    Web前端 ---- 【Vue3】computed計算屬性和watch偵聽屬性(偵聽被ref和reactive包裹的數(shù)據(jù))

    目錄 前言 computed watch watch偵聽ref數(shù)據(jù) ref簡單數(shù)據(jù)類型 ref復(fù)雜數(shù)據(jù)類型 watch偵聽reactive數(shù)據(jù) 本文介紹在vue3中的computed計算屬性和watch偵聽屬性。介紹watch如何偵聽被ref和reactive包裹的數(shù)據(jù) 在vue3中,計算屬性computed也是組合式api,也就是說要先引入,再在setup中使用 語法 完整:

    2024年01月18日
    瀏覽(46)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包