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

Vue3?計算屬性的用法詳解

 更新時間:2022年07月07日 07:57:50   作者:ed。  
學(xué)過?vue2?的寶子們應(yīng)該都清楚,計算屬性這個東西在項目開發(fā)過程中使用的還是比較頻繁的,使用頻率相對來說比較高。本文就來為大家介紹一下Vue3中計算屬性的用法,需要的可以參考一下

上一篇博文說了 vue3 項目的 toRefs 函數(shù)和 toRef 函數(shù),今天就稍微總結(jié)一下 vue3 的計算屬性,其實學(xué)過 vue2 的寶子們應(yīng)該都清楚,計算屬性這個東西在項目開發(fā)過程中使用的還是比較頻繁的,使用頻率相對來說比較高,所以說咱今天稍微總結(jié)一下 vue3 項目中的計算屬性,下面開始。

computed 計算屬性說明

computed 表示計算屬性,通常的作用是用來進(jìn)行數(shù)據(jù)處理,方便在末班中簡化書寫。

比如日常在模板中我們渲染數(shù)據(jù)的時候一般是使用 {{ }} 來進(jìn)行展示數(shù)據(jù),但是有的時候嘞,獲取到的數(shù)據(jù)并不是我們想要的類型,我們可以在 {{ }} 中編寫表達(dá)式轉(zhuǎn)換成我們需要的類型,但是呢,這樣做簡單的還可以,如果相對復(fù)雜的格式在 {{ }} 中編寫的話就會造成模板代碼繁瑣,不易維護(hù)和閱讀,所以這并不是最好的編碼習(xí)慣,因此,vue3 也為我們提供了一些好的解決方案,計算屬性就是其中一種。

計算屬性可以幫我們將數(shù)據(jù)轉(zhuǎn)換成需要展示的數(shù)據(jù)格式,不必在模板中編寫大量的表達(dá)式進(jìn)行處理。

計算屬性使用

首先呢,使用 computed 需要引入。

import { computed } from 'vue'

引入這一個步驟是不可或缺的。

然后我們編寫一個案例,就是一個頁面有兩個輸入框,第一個輸入框的數(shù) 加上 第二個輸入框的數(shù),使用計算屬性在第三個輸入框求和。

<template>
  <div>
    <h1>computed 計算屬性</h1>
    <el-input v-model="num1" /> +
    <el-input v-model="num2" /> =
    <el-input v-model="num3" />
  </div>
</template>
<script>
  import { computed, ref } from 'vue'
  export default {
    setup() {
      const num1 = ref('')
      const num2 = ref('')
      const num3 = computed(() => {
        return Number(num1.value) + Number(num2.value)
      })
      return { num1, num2, num3 }
    }
  }
</script>
<style scoped>
  .el-input {
    width: 100px;
  }
</style>

保存刷新,輸如前兩個輸入框的值,會自動計算和展示在第三個輸入框。

這樣就實現(xiàn)了最簡單的計算屬性。

計算屬性不是只可以寫一個的,可以寫任意多個計算屬性,怎么操作呢?看代碼:

<template>
  <div>
    <h1>computed 計算屬性</h1>
    <el-input v-model="num1" /> +
    <el-input v-model="num2" /> =
    <el-input v-model="num3" />
    <hr>
    <el-input v-model="num1" /> -
    <el-input v-model="num2" /> =
    <el-input v-model="num4" />
  </div>
</template>
<script>
  import { computed, reactive, toRefs } from 'vue'
  export default {
    setup() {
      const num1 = ''
      const num2 = ''
      const all = reactive({ num1, num2 })

      // 計算屬性求和
      const num3 = computed(() => {
        return Number(all.num1) + Number(all.num2)
      })

      // 計算屬性求差
      const num4 = computed(() => {
        return Number(all.num1) - Number(all.num2)
      })
      return { ...toRefs(all), num3, num4 }
    }
  }
</script>
<style scoped>
  .el-input {
    width: 100px;
  }
</style>

保存刷新,我們看到除了求和,還可以求差。

這樣的話,就實現(xiàn)了在一個頁面實現(xiàn)多個計算屬性的操作,完全不用寫在一個計算屬性里面進(jìn)行判斷處理,很靈活,當(dāng)然了,有三個可以寫三個,有四個可以寫四個。

但是有一點需要注意!

如果我們直接修改計算屬性的值會報一個錯誤!

比如我們有一個按鈕,點擊之后把 num4 修改為 10 。

      function btn() {
        console.log(num4)
        num4.value = 10
      }

我們可以看一下效果。

沒錯,他會有一個錯誤,這個意思都懂,就是計算屬性是只讀的不允許修改。

為什么呢?

總結(jié): 如果傳遞給 computed 的是一個函數(shù),那么這就是一個 getter 函數(shù),我們只能獲取它的值,而不能直接修改它。

那我需要修改計算屬性的值,我們需要怎么操作呢?其實很簡單,只需要傳進(jìn)去一個對象。

	  // 計算屬性求和
      const num3 = computed({
        get: () => {
          return Number(all.num1) + Number(all.num2)
        },
        set:(value) => {
          console.log(value)
          return all.num2 = Number(value) + 1
        }
      })

也就是說,計算屬性傳入一個對象, 包含get 和 set 函數(shù), 就能實現(xiàn)創(chuàng)建一個可以修改的計算屬性。

案例:

<template>
  <div>
    <h1>computed 計算屬性</h1>
    <el-input v-model="num1" /> +
    <el-input v-model="num2" /> =
    <el-input v-model="num3" />
    <br>
    <br>
    <el-button type="primary" @click="btn">修改計算屬性</el-button>
  </div>
</template>
<script>
  import { computed, reactive, toRefs } from 'vue'
  export default {
    setup() {
      const num1 = ''
      const num2 = ''
      const all = reactive({ num1, num2 })

      // 計算屬性求和
      const num3 = computed({
        get: () => {
          return Number(all.num1) + Number(all.num2)
        },
        set:(value) => {
          console.log(value)
          return all.num2 = Number(value) + 1
        }
      })

      function btn() {
        num3.value = '10'
      }

      return { ...toRefs(all), num3, btn }
    }
  }
</script>
<style scoped>
  .el-input {
    width: 100px;
  }
</style>

點擊按鈕,把 num2 改成輸入的數(shù)字 + 1,也就是11。

好的,這就實現(xiàn)了修改計算屬性。

總結(jié)

  • vue.3.0 中用于從vue 按需導(dǎo)入 computed 計算屬性。
  • 如果傳入的是一個getter 函數(shù), 會返回一個不允許修改的計算屬性。
  • 使用ref 創(chuàng)建一個響應(yīng)式對象, 在模板中使用不用自動解套。 直接渲染使用。
  • 傳入一個對象, 包含get 和 set 函數(shù), 就可以創(chuàng)建一個可以修改的計算屬性。
  • 只可以獲取值,不允許修改值直接使用 computed 計算屬性使用箭頭函數(shù)。
  • 既可以獲取值, 也可以修改值, computed 計算屬性中傳入一個對象。 get 方法 和 set 方法。

注意

在 vue2 中,有一個叫做過濾器的家伙,從 vue3 開始,過濾器已經(jīng)被移除,且不再進(jìn)行支持。官方給的建議是用方法調(diào)用或計算屬性來替換它們。

到此這篇關(guān)于Vue3 計算屬性的用法詳解的文章就介紹到這了,更多相關(guān)Vue3 計算屬性內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解TypeScript+Vue 插件 vue-class-component的使用總結(jié)

    詳解TypeScript+Vue 插件 vue-class-component的使用總結(jié)

    這篇文章主要介紹了TypeScript+Vue 插件 vue-class-component的使用總結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • 基于vue+h5實現(xiàn)車牌號輸入框功能(demo)

    基于vue+h5實現(xiàn)車牌號輸入框功能(demo)

    最近開發(fā)項目是學(xué)校校內(nèi)車輛超速方面的統(tǒng)計檢測方面的系統(tǒng),在開發(fā)過程中發(fā)現(xiàn)有個小功能,就是用戶移動端添加車牌號,剛開始想著輸入框,提交時正則效驗一下格式,最后感覺不方便,所以就簡單自己手寫了一個H5車牌號軟鍵盤,對vue車牌號輸入框?qū)崿F(xiàn)代碼感興趣的朋友一起看看吧
    2025-03-03
  • vue更新數(shù)據(jù)卻不渲染頁面的解決

    vue更新數(shù)據(jù)卻不渲染頁面的解決

    這篇文章主要介紹了vue更新數(shù)據(jù)卻不渲染頁面的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue中常見的問題及解決方法總結(jié)(推薦)

    vue中常見的問題及解決方法總結(jié)(推薦)

    這篇文章主要給大家介紹了關(guān)于vue中常見的問題及解決方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • vue中input標(biāo)簽上傳本地文件或圖片后獲取完整路徑的解決方法

    vue中input標(biāo)簽上傳本地文件或圖片后獲取完整路徑的解決方法

    本文給大家介紹vue中input標(biāo)簽上傳本地文件或圖片后獲取完整路徑,如E:\medicineOfCH\stageImage\xxx.jpg,本文給大家分享完美解決方案,感興趣的朋友跟隨小編一起看看吧
    2023-04-04
  • vue路由懶加載工作原理

    vue路由懶加載工作原理

    Vue路由懶加載是一種優(yōu)化技術(shù),旨在減少應(yīng)用程序的初始加載時間并提高性能,這篇文章給大家介紹vue路由懶加載的相關(guān)知識,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • vue-element的select下拉框賦值實例

    vue-element的select下拉框賦值實例

    這篇文章主要介紹了vue-element的select下拉框賦值實例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Vue中如何避免props驗證失敗問題

    Vue中如何避免props驗證失敗問題

    本文將探討 props 驗證失敗的常見原因,并提供解決方法,幫助開發(fā)者在 Vue 組件開發(fā)中避免這些問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • 解析vue.config.js文件使用

    解析vue.config.js文件使用

    這篇文章主要介紹了vue.config.js文件使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Vue實現(xiàn)PC端分辨率自適應(yīng)的示例代碼

    Vue實現(xiàn)PC端分辨率自適應(yīng)的示例代碼

    本文主要介紹了Vue實現(xiàn)PC端分辨率自適應(yīng)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評論

顺平县| 榆社县| 新和县| 三台县| 通河县| 准格尔旗| 乐业县| 莱州市| 永定县| 蓝山县| 疏附县| 固原市| 龙州县| 永平县| 大悟县| 邳州市| 朔州市| 陕西省| 桂阳县| 齐齐哈尔市| 昌黎县| 云阳县| 榆树市| 建平县| 山丹县| 波密县| 枣庄市| 宜君县| 台安县| 金川县| 平遥县| 古田县| 延安市| 辉南县| 麻城市| 江华| 泉州市| 贵州省| 牙克石市| 三台县| 清涧县|