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

setup+ref+reactive實(shí)現(xiàn)vue3響應(yīng)式功能

 更新時(shí)間:2021年11月23日 17:23:07   作者:前端人  
這篇文章介紹了通過setup+ref+reactive實(shí)現(xiàn)vue3響應(yīng)式功能,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

setup 是用來寫組合式 api ,內(nèi)部的數(shù)據(jù)和方法需要通過 return 之后,模板才能使用。在之前 vue2 中,data 返回的數(shù)據(jù),可以直接進(jìn)行雙向綁定使用,如果我們把 setup 中數(shù)據(jù)類型直接雙向綁定,發(fā)現(xiàn)變量并不能實(shí)時(shí)響應(yīng)。接下來就看看setup如何實(shí)現(xiàn)data的響應(yīng)式功能?

一、ref

setup 內(nèi)的自定義屬性不具備響應(yīng)式能力,所以引入了 ref ,ref 底層通過代理,把屬性包裝值包裝成一個(gè) proxy ,proxy 內(nèi)部是一個(gè)對象,使得基礎(chǔ)類型的數(shù)據(jù)具備響應(yīng)式能力,使用之前必須引入。

示例1:ref 使用

<template>
 <div>
  <input type="text" v-model="mood">
  {{mood}}
 </div>
</template>
<script>
import { ref } from "vue"
export default{
 setup(){
  let mood = ref("此時(shí)心情好差呀!")
  setTimeout(()=>{
   mood.value = "心情要變的像人一樣美"
  },3000)
  return{
   mood
  }
 }
}
</script>

此時(shí)可以在 setup 模板內(nèi)任意編輯 mood,可以保證實(shí)時(shí)響應(yīng)。實(shí)例在修改 mood 的值加了 value ,是因?yàn)?ref 的工作原來:

let mood = ref("此時(shí)心情好差呀!")

修改成:let mood = proxy({value:"此時(shí)心情好差呀!"})

二、reactive

上述的 ref 讓基礎(chǔ)數(shù)據(jù)類型具備了響應(yīng)式,但是如果我們換成引用類型的數(shù)據(jù),就會失效。所以引入了 reactive。

reactive 通過底層包裝,將引用類型數(shù)據(jù)包裝到 proxy 內(nèi),使用原理如:

let me = reactive({
 single:true,
 want:"暖的像火爐的暖男"
})

// 運(yùn)行結(jié)果為
let me = proxy : { single: true, want:"暖的像火爐的暖男" }

引用的時(shí)候,直接使用 me.want 就可以了。

示例2:reactive 使用

<template>
 <div>
  {{me.want}}
 </div>
</template>
<script>
import { ref , reactive } from "vue"
export default{
 setup(){
  let me = reactive({
   single:true,
   want:"暖的像火爐的暖男"
  })
  setTimeout(()=>{
   me.want = "夏天容易化了"
  },3000)
  return{
   me
  }
 }
}
</script>

通過 setup + ref + reactive 就可以完全實(shí)現(xiàn) vue2 中 data 的響應(yīng)式功能,所以 setup 完全可以替換掉 data。

三、toRefs 、toRef 應(yīng)用

setup + ref + reactive 實(shí)現(xiàn)了數(shù)據(jù)響應(yīng)式,不能使用 ES6 解構(gòu),會消除響應(yīng)特性。所以需要 toRefs 解構(gòu),使用時(shí),需要先引入。

它的工作原理為:

import { ref , reactive, toRefs } from "vue"
let me = reactive({
 single:true,
 want:"暖的像火爐的暖男"
})
//運(yùn)行為
let me = proxy : { single: true, want:"暖的像火爐的暖男" }

const { single, want } = toRefs( me )
// 運(yùn)行為
single : proxy({ value:true })
want : proxy({ value:"暖的像火爐的暖男" })

toRefs 把 single 和 want 解構(gòu)成兩個(gè) proxy ,所以是響應(yīng)式的。

示例3:toRefs 解構(gòu)數(shù)據(jù)

<template>
 <div>
  {{want}}
  <input type="text" v-model="want">
 </div>
</template>
<script>
import { ref , reactive, toRefs } from "vue"
export default{
 setup(){
  let me = reactive({
   single:true,
   want:"暖的像火爐的暖男"
  })
  setTimeout(()=>{
   me.want = "夏天容易化了"
  },3000)
  // 解構(gòu)
  const {single,want} = toRefs(me)
   return{
    single,
    want
   }
  }
}
</script>

toRef作用:將對象某一個(gè)屬性,作為引用返回。比較難理解,可以打印查看下結(jié)果更容易理解。

let me = reactive({
 single:true,
 want:"暖的像火爐的暖男"
})
let lv = toRef( me, 'love' )
console.log('love',love);
//打印結(jié)果
ObjectRefImpl {
 __v_isRef: true
 _key: "love"
 _object: Proxy {single: true, want: "暖的像火爐的暖男"}
 value: undefined
 [[Prototype]]: Object
}

toRef 是組件之間進(jìn)行傳值值,對可選參數(shù)進(jìn)行處理,運(yùn)行時(shí),先查看 me中是否存在 love ,如果存在時(shí)就繼承 me 中的 love ,如果不存在時(shí)就創(chuàng)建一個(gè) love ,然后解構(gòu)賦值給變量 lv。

示例4:toRef 使用

<template>
 <div>
  {{want}}
 <input type="text" v-model="want">
</div>
</template>
<script>
import { ref , reactive, toRefs, toRef } from "vue"
export default{
 setup(){
  let me = reactive({
   single:true,
   want:"暖的像火爐的暖男"
  })
 setTimeout(()=>{
  me.want = "夏天容易化了"
 },3000)
 const {single,want } = toRefs(me)
 const love = toRef(me,'love')
 console.log('love',love);
 return{
  single,
  want
  }
 }
}
</script>

四、總結(jié)

ref 讓基礎(chǔ)數(shù)據(jù)類型具備響應(yīng)式,而 reactive 讓引用類型的數(shù)據(jù)具備響應(yīng)式。setup + ref + reactive 完全實(shí)現(xiàn) vue2 中 data 響應(yīng)式功能。

toRefs 解構(gòu) reactive 包裝的數(shù)據(jù),toRef 用于對可選參數(shù)。

以上所述是小編給大家介紹的通過setup+ref+reactive實(shí)現(xiàn)vue3響應(yīng)式功能,希望對大家有所幫助。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Vue自定義部分頁面顯示導(dǎo)航欄功能

    Vue自定義部分頁面顯示導(dǎo)航欄功能

    這篇文章主要介紹了Vue自定義部分頁面顯示導(dǎo)航欄,在設(shè)計(jì)導(dǎo)航欄的時(shí)候,考慮到登錄之前不能瀏覽該網(wǎng)站,所以需要在登錄頁和注冊頁不能出現(xiàn)導(dǎo)航欄,登錄后的頁面才能出現(xiàn)導(dǎo)航欄,本文給大家解決這個(gè)問題,感興趣的朋友跟隨小編一起看看吧
    2022-10-10
  • 淺析Vue 生命周期

    淺析Vue 生命周期

    這篇文章主要介紹了Vue 生命周期的過程,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-06-06
  • Vue加入購物車判斷token添加登錄提示功能

    Vue加入購物車判斷token添加登錄提示功能

    加入購物車,是一個(gè)登錄后的用戶 才能進(jìn)行的操作,所以需要進(jìn)行鑒權(quán)判斷,判斷用戶token是否存在,這篇文章主要介紹了Vue加入購物車判斷token添加登錄提示,需要的朋友可以參考下
    2023-11-11
  • Element Steps步驟條的使用方法

    Element Steps步驟條的使用方法

    這篇文章主要介紹了Element Steps步驟條的使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 利用Vue實(shí)現(xiàn)一個(gè)markdown編輯器實(shí)例代碼

    利用Vue實(shí)現(xiàn)一個(gè)markdown編輯器實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于如何利用Vue實(shí)現(xiàn)一個(gè)markdown編輯器的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • vue3中的elementPlus全局組件中文轉(zhuǎn)換方式

    vue3中的elementPlus全局組件中文轉(zhuǎn)換方式

    這篇文章主要介紹了vue3中的elementPlus全局組件中文轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • vue使用axios的小技巧分享

    vue使用axios的小技巧分享

    這篇文章主要為大家詳細(xì)介紹了一些vue使用axios的小技巧,文中的示例代碼講解詳細(xì),對我們深入掌握vue有一定的幫助,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • vue點(diǎn)擊按鈕動態(tài)創(chuàng)建與刪除組件功能

    vue點(diǎn)擊按鈕動態(tài)創(chuàng)建與刪除組件功能

    這篇文章主要介紹了vue點(diǎn)擊按鈕動態(tài)創(chuàng)建與刪除組件功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Vue3+Vite項(xiàng)目中引入pinia和pinia-plugin-persistedstate的方法代碼

    Vue3+Vite項(xiàng)目中引入pinia和pinia-plugin-persistedstate的方法代碼

    這篇文章主要給大家介紹了關(guān)于Vue3+Vite項(xiàng)目中引入pinia和pinia-plugin-persistedstate的相關(guān)資料,Pinia是Vue.js的官方狀態(tài)管理庫,輕量且功能強(qiáng)大,支持模塊化和TypeScript,PiniaPluginPersistedState是一個(gè)插件,需要的朋友可以參考下
    2024-11-11
  • axios中post請求json和application/x-www-form-urlencoded詳解

    axios中post請求json和application/x-www-form-urlencoded詳解

    Axios是專注于網(wǎng)絡(luò)數(shù)據(jù)請求的庫,相比于原生的XMLHttpRequest對象,axios簡單易用,下面這篇文章主要給大家介紹了關(guān)于axios中post請求json和application/x-www-form-urlencoded的相關(guān)資料,需要的朋友可以參考下
    2022-10-10

最新評論

双柏县| 安西县| 东乡族自治县| 依兰县| 宁明县| 神农架林区| 阳高县| 上高县| 沅陵县| 水城县| 长寿区| 松原市| 山西省| 秦皇岛市| 垫江县| 维西| 曲麻莱县| 苗栗县| 江永县| 阳信县| 徐州市| 曲靖市| 和平区| 旬邑县| 布拖县| 绿春县| 南召县| 鹤山市| 敦煌市| 惠州市| 南阳市| 庐江县| 辽宁省| 图们市| 南开区| 桐柏县| 来凤县| 密山市| 德昌县| 榆社县| 阳高县|