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

vue3的ref,computed,reactive和toRefs你都了解嗎

 更新時間:2022年03月21日 15:37:10   作者:不另外加糖  
這篇文章主要為大家詳細(xì)介紹了vue3的ref,computed,reactive和toRefs,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

在vue2中,data函數(shù)里返回的值直接為響應(yīng)式的,但在vue3中我們需要使用一些函數(shù)才能達(dá)到這個效果。

setup函數(shù)中拿不到vue的this

1、ref 

本質(zhì)為一個函數(shù),輸入?yún)?shù)為一個值(原始類型),返回響應(yīng)式的對象

2、computed

本質(zhì)為一個函數(shù),輸入?yún)?shù)是一個函數(shù),可以將我們需要的值作為輸入函數(shù)的返回值

例子:實(shí)現(xiàn)點(diǎn)擊按鈕,屏幕上的數(shù)加1

<template>
  <div id='app'>
    <img alt="vue logo" src="./assets/logo.png">
    <!-- ref對象在模板中引用時,vue可以直接把內(nèi)部的值展示出來,不需要寫count.value -->
    <h1>{{count}}</h1>
    <h1>{{double}}</h1>
    <button @click='increase'>點(diǎn)擊</button>
  </div>
</template>
<script lang='ts'>
//ref API:是一個函數(shù),輸入?yún)?shù)為一個值,返回一個響應(yīng)式對象
//computed API:是一個函數(shù),輸入?yún)?shù)為函數(shù)類型,該輸入函數(shù)中包含咱們需要的值
//reactive:將響應(yīng)式變量包裹在一起,更加清晰
import {computed, ref,reactive} from 'vue'
export default({
  name: 'App', 
  /*data(){
    return{
      count: 0
    }
  },
  methods:{
    increase(){
      this.count++
    }
  }*/
  // 注意:在vue3中不使用data和methods,可以使用ref函數(shù),完成響應(yīng)式
  setup(){
    const count = ref(0)    //將0傳入,返回一個對象
    const double = computed(()=>{
      return count.value*2
    })
    const increase = ()=>{
      count.value++         //通過返回對象的value屬性獲得響應(yīng)式的數(shù)據(jù)
    }
    return{                 //要在外面使用的變量都要先通過return導(dǎo)出,才能使用
      count,
      increase,
      double
    }
  }
});
</script>

3、reactive

本質(zhì)為一個函數(shù),接受一個object作為傳入?yún)?shù)

上述代碼在setup函數(shù)中,有很多響應(yīng)式數(shù)據(jù),它們都是分散的,我們可以使用reactive將它們都包裹起來。輸出對象類型,模板中需要用data.屬性取出來。

<template>
  <div id='app'>
    <img alt="vue logo" src="./assets/logo.png">
    <h1>{{data.count}}</h1>
    <h1>{{data.double}}</h1>
    <button @click='data.increase'>點(diǎn)擊</button>
  </div>
</template>
<script lang='ts'>
import {computed, ref,reactive} from 'vue'
export default({
  name: 'App', 
  // 注意:在vue3中不使用data和methods,可以使用ref函數(shù),完成響應(yīng)式
  setup(){
    const data = reactive({
      count:0,
      increase:()=>{
        data.count++
      },
      double:computed(()=>
        data.count*2
      )
    })
    return{                 //要在外面使用的變量都要先通過return導(dǎo)出,才能使用
      data
    }
  }
});
</script>

上述代碼在運(yùn)行時會報(bào)錯,data數(shù)據(jù)類型會出錯,這是因?yàn)閮?nèi)部的computed函數(shù)造成的data類型推論循環(huán),需要解決??梢允謩釉O(shè)置一個數(shù)據(jù)類型賦給data。

interface dataProps{
  count:number,
  double:number,
  increase:()=>void
}

繼續(xù)修改上述代碼,發(fā)現(xiàn)模板中每次使用數(shù)據(jù)都需要data.屬性才能取出來,能不能直接用屬性?這時我們想到了es6的...展開符,但是更改后發(fā)現(xiàn)點(diǎn)擊按鈕,屏幕上的數(shù)字不發(fā)生變化了,數(shù)據(jù)不是響應(yīng)式的了。

這是因?yàn)檫@種方式返回的數(shù)據(jù)都是普通的js數(shù)據(jù)類型,并不是響應(yīng)式的ref數(shù)據(jù)類型,因此我們需要新的方法。

4、toRefs

本質(zhì)為一個函數(shù),接受一個reactive函數(shù)作為輸入?yún)?shù),返回一個ref類型的對象。

<template>
  <div id='app'>
    <img alt="vue logo" src="./assets/logo.png">
    <!-- ref對象在模板中引用時,vue可以直接把內(nèi)部的值展示出來,不需要寫count.value -->
    <h1>{{count}}</h1>
    <h1>{{double}}</h1>
    <button @click='increase'>點(diǎn)擊</button>
  </div>
</template>
const refData = toRefs(data)
return{                 //要在外面使用的變量都要先通過return導(dǎo)出,才能使用
  ...refData
}

這時,我們展開refData,就能實(shí)現(xiàn)響應(yīng)式了。

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!  

相關(guān)文章

  • Vuex存值取值與異步請求處理方式

    Vuex存值取值與異步請求處理方式

    本文將詳細(xì)介紹Vuex的使用方法,包括參數(shù)值的獲取、修改,以及異步數(shù)據(jù)處理,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • vue獲取token(設(shè)置token,清除token)實(shí)現(xiàn)登錄方式

    vue獲取token(設(shè)置token,清除token)實(shí)現(xiàn)登錄方式

    這篇文章主要介紹了vue獲取token(設(shè)置token,清除token)實(shí)現(xiàn)登錄方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Vue中的組件及路由使用實(shí)例代碼詳解

    Vue中的組件及路由使用實(shí)例代碼詳解

    組件系統(tǒng)是 Vue 的一個重要概念,因?yàn)樗且环N抽象,允許我們使用小型、獨(dú)立和通??蓮?fù)用的組件構(gòu)建大型應(yīng)用。這篇文章主要介紹了Vue中的組件及路由使用 ,需要的朋友可以參考下
    2019-05-05
  • vue.js中$watch的用法示例

    vue.js中$watch的用法示例

    這篇文章為大家詳細(xì)介紹了vue.js中$watch的用法,文中給出了示例代碼,相信對大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,有需要的朋友們可以一起看看吧。
    2016-10-10
  • vue二級菜單導(dǎo)航點(diǎn)擊選中事件的方法

    vue二級菜單導(dǎo)航點(diǎn)擊選中事件的方法

    今天小編就為大家分享一篇vue二級菜單導(dǎo)航點(diǎn)擊選中事件的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vue el-upload手動上傳實(shí)現(xiàn)過程

    vue el-upload手動上傳實(shí)現(xiàn)過程

    這篇文章主要介紹了vue el-upload手動上傳實(shí)現(xiàn)過程,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • VUE如何利用vue-print-nb實(shí)現(xiàn)打印功能詳解

    VUE如何利用vue-print-nb實(shí)現(xiàn)打印功能詳解

    這篇文章主要給大家介紹了關(guān)于VUE如何利用vue-print-nb實(shí)現(xiàn)打印功能的相關(guān)資料,文中還給大家介紹了vue-print-nb使用中的常見問題,如空白頁,需要的朋友可以參考下
    2022-04-04
  • vue3+element Plus實(shí)現(xiàn)在table中增加一條表單數(shù)據(jù)的示例代碼

    vue3+element Plus實(shí)現(xiàn)在table中增加一條表單數(shù)據(jù)的示例代碼

    這篇文章主要介紹了vue3+element Plus實(shí)現(xiàn)在table中增加一條表單數(shù)據(jù)的操作,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-01-01
  • vue?element-ui的el-input-number默認(rèn)值設(shè)置為空方法

    vue?element-ui的el-input-number默認(rèn)值設(shè)置為空方法

    這篇文章主要給大家介紹了關(guān)于vue?element-ui的el-input-number默認(rèn)值設(shè)置為空的相關(guān)資料,el-input-number組件是Element?UI非常常用的一個數(shù)字輸入框組件,它提供了默認(rèn)值設(shè)置的選項(xiàng),需要的朋友可以參考下
    2023-08-08
  • 手把手教你vue實(shí)現(xiàn)動態(tài)路由

    手把手教你vue實(shí)現(xiàn)動態(tài)路由

    動態(tài)路由可以根據(jù)不同用戶登錄獲取不一樣的路由層級,可隨時調(diào)配路由,下面這篇文章主要給大家介紹了關(guān)于vue實(shí)現(xiàn)動態(tài)路由的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07

最新評論

大丰市| 阿尔山市| 德昌县| 富宁县| 苗栗县| 和静县| 郓城县| 凉山| 西畴县| 马鞍山市| 车致| 安徽省| 阳东县| 德钦县| 五原县| 周宁县| 平凉市| 奉新县| 儋州市| 门源| 盘锦市| 庆元县| 临猗县| 临邑县| 哈密市| 周至县| 嘉义县| 拉萨市| 白河县| 西昌市| 黔南| 乐业县| 长寿区| 施秉县| 和田市| 东方市| 周宁县| 收藏| 甘德县| 体育| 澳门|