91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

setup+ref+reactive如何實現vue3響應式功能

發布時間:2021-11-23 21:08:22 來源:億速云 閱讀:187 作者:柒染 欄目:開發技術

這篇文章給大家介紹setup+ref+reactive如何實現vue3響應式功能,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

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

一、ref

setup 內的自定義屬性不具備響應式能力,所以引入了 ref ,ref 底層通過代理,把屬性包裝值包裝成一個 proxy ,proxy 內部是一個對象,使得基礎類型的數據具備響應式能力,使用之前必須引入。

示例1:ref 使用

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

此時可以在 setup 模板內任意編輯 mood,可以保證實時響應。實例在修改 mood 的值加了 value ,是因為 ref 的工作原來:

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

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

二、reactive

上述的 ref 讓基礎數據類型具備了響應式,但是如果我們換成引用類型的數據,就會失效。所以引入了 reactive。

reactive 通過底層包裝,將引用類型數據包裝到 proxy 內,使用原理如:

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

// 運行結果為
let me = proxy : { single: true, want:"暖的像火爐的暖男" }

引用的時候,直接使用 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 就可以完全實現 vue2 中 data 的響應式功能,所以 setup 完全可以替換掉 data。

三、toRefs 、toRef 應用

setup + ref + reactive 實現了數據響應式,不能使用 ES6 解構,會消除響應特性。所以需要 toRefs 解構,使用時,需要先引入。

它的工作原理為:

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

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

toRefs 把 single 和 want 解構成兩個 proxy ,所以是響應式的。

示例3:toRefs 解構數據

<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)
  // 解構
  const {single,want} = toRefs(me)
   return{
    single,
    want
   }
  }
}
</script>

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

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

toRef 是組件之間進行傳值值,對可選參數進行處理,運行時,先查看 me中是否存在 love ,如果存在時就繼承 me 中的 love ,如果不存在時就創建一個 love ,然后解構賦值給變量 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>

ref 讓基礎數據類型具備響應式,而 reactive 讓引用類型的數據具備響應式。setup + ref + reactive 完全實現 vue2 中 data 響應式功能。

toRefs 解構 reactive 包裝的數據,toRef 用于對可選參數。

關于setup+ref+reactive如何實現vue3響應式功能就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

资溪县| 通州区| 乐陵市| 蓝田县| 阳曲县| 如东县| 天气| 武隆县| 永嘉县| 双鸭山市| 武功县| 常山县| 张掖市| 德化县| 横峰县| 白水县| 桦川县| 长丰县| 阳西县| 云阳县| 西乡县| 灵川县| 南岸区| 日土县| 广东省| 邹城市| 来宾市| 响水县| 乌海市| 板桥市| 北海市| 济阳县| 翁牛特旗| 科技| 新余市| 多伦县| 望谟县| 宝清县| 梅州市| 格尔木市| 祁东县|