偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Vue 3 學(xué)習(xí)筆記—Vue3 中 Computed 的新用法

開(kāi)發(fā) 前端
這篇文章主要介紹 vue3 中 computed 的新用法,對(duì)比 vue2 中的寫(xiě)法,讓您快速掌握 vue3 中 computed 的新用法。

[[439236]]

vue3 中 的 computed 的使用,由于 vue3 兼容 vue2 的選項(xiàng)式API,所以可以直接使用 vue2的寫(xiě)法,這篇文章主要介紹 vue3 中 computed 的新用法,對(duì)比 vue2 中的寫(xiě)法,讓您快速掌握 vue3 中 computed 的新用法。

組合式 API 中使用 computed 時(shí),需要先引入:import { computed } from "vue"。引入之后 computed 可以傳入的參數(shù)有兩種:回調(diào)函數(shù)和 options 。具體看看它是如何使用的?

一、函數(shù)式寫(xiě)法

在vue2中,computed 寫(xiě)法:

  1. computed:{ 
  2.  sum(){ 
  3.   return this.num1+ this.num2 
  4.  } 

 在vue3 如果使用選項(xiàng)式API也可以這樣寫(xiě),主要看下組合式API的使用。

示例1:求和

  1. import { ref, computed } from "vue" 
  2. export default
  3.  setup(){ 
  4.   const num1 = ref(1) 
  5.   const num2 = ref(1) 
  6.   let sum = computed(()=>{ 
  7.    return num1.value + num2.value 
  8.   }) 
  9.  } 

 調(diào)用 computed 時(shí), 傳入了一個(gè)箭頭函數(shù),返回值作為 sum 。相比之前,使用更加簡(jiǎn)單了。如果需要計(jì)算多個(gè)屬性值,直接調(diào)用就可以。如:

  1. let sum = computed(()=>{ 
  2.  return num1.value + num2.value 
  3.  }) 
  4. let mul = computed(()=>{ 
  5.  return num1.value * num2.value 
  6.  }) 

 該示例過(guò)于簡(jiǎn)單,看不明白的可在文章后面閱讀完整實(shí)例1。

二、options 寫(xiě)法

計(jì)算屬性默認(rèn)只有 getter ,在需要的時(shí)候也可以提供 setter 。在vue2中用法如下:

  1. computed:{ 
  2.  mul:{ 
  3.   get(){ // num1值改變時(shí)觸發(fā) 
  4.    return this.num1 * 10 
  5.   }, 
  6.   set(value){ // mul值被改變時(shí)觸發(fā) 
  7.    this.num1 = value /10 
  8.   } 
  9.  } 

 mul 屬性是 給num1 放大10,如果修改 mul 的值,則 num1 也隨之改變。

在 vue3 中 :

  1. let mul = computed({ 
  2.  get:()=>{ 
  3.   return num1.value *10 
  4.  }, 
  5.  set:(value)=>{ 
  6.   return num1.value = value/10 
  7.  } 
  8. }) 

 這兩種寫(xiě)法不太一樣,仔細(xì)觀察區(qū)別不大,get 和 set 調(diào)用也是一樣的。

在此示例中代碼簡(jiǎn)單,如果沒(méi)太理解,可查看文章后面的完整實(shí)例2。

完整實(shí)例1:

  1. <template> 
  2.  <div> 
  3.   {{num1}} + {{num2}} = {{sum}} 
  4.   <br> 
  5.   <button @click="num1++">num1自加</button> 
  6.   <button @click="num2++">num2自加</button> 
  7.  </div> 
  8. </template> 
  9. <script> 
  10. import { ref, computed } from "vue" 
  11. export default
  12.  setup(){ 
  13.   const num1 = ref(1) 
  14.   const num2 = ref(1) 
  15.   let sum = computed(()=>{ 
  16.    return num1.value + num2.value 
  17.   }) 
  18.   return
  19.    num1, 
  20.    num2, 
  21.    sum 
  22.   } 
  23.  } 
  24. </script> 

 完整實(shí)例2:

  1. <template> 
  2.  <div> 
  3.   {{num1}} + {{num2}} = {{sum}}<br> 
  4.   <button @click="num1++">num1自加</button> 
  5.   <button @click="num2++">num2自加</button> 
  6.   <br> 
  7.   {{num1}} * 10 = {{mul}} 
  8.   <button @click="mul=100">改值</button> 
  9.  </div> 
  10. </template> 
  11. <script> 
  12. import { ref, computed } from "vue" 
  13. export default
  14.  setup(){ 
  15.   const num1 = ref(1) 
  16.   const num2 = ref(1) 
  17.  
  18.   let sum = computed(()=>{ 
  19.    return num1.value + num2.value 
  20.   }) 
  21.   let mul = computed({ 
  22.    get:()=>{ 
  23.     return num1.value *10 
  24.    }, 
  25.    set:(value)=>{ 
  26.     return num1.value = value/10 
  27.    } 
  28.   }) 
  29.   return
  30.    num1, 
  31.    num2, 
  32.    sum
  33.    mul 
  34.   } 
  35.  } 
  36. </script> 

三、computed 傳參

計(jì)算屬性需要傳入一個(gè)參數(shù)怎么寫(xiě)呢?

  1. <template> 
  2.  <div> 
  3.   <div v-for="(item,index) in arr" :key="index" @click="sltEle(index)"
  4.    {{item}} 
  5.   </div> 
  6.  </div> 
  7. </template> 
  8. <script> 
  9. import { ref, computed,reactive } from "vue" 
  10. export default
  11.  setup(){ 
  12.   const arr = reactive([ 
  13.    '哈哈','嘿嘿' 
  14.   ]) 
  15.   const sltEle = computed( (index)=>{ 
  16.    console.log('index',index);   
  17.   }) 
  18.   return
  19.    arr,sltEle 
  20.   } 
  21.  } 
  22. </script> 

直接這樣寫(xiě),運(yùn)行的時(shí)候,出現(xiàn)錯(cuò)誤:Uncaught TypeError: $setup.sltEle is not a function。

原因:

computed 計(jì)算屬性并沒(méi)有給定返回值,我們調(diào)用的是一個(gè)函數(shù),而 computed 內(nèi)部返回的并不是一個(gè)函數(shù),所以就會(huì)報(bào)錯(cuò):sltEle is not a function。

解決辦法:

需要在計(jì)算屬性 內(nèi)部返回一個(gè)函數(shù)。修改代碼如下:

  1. const sltEle = computed( ()=>{ 
  2.  return function(index){ 
  3.   console.log('index',index); 
  4.  } 
  5. }) 

 

責(zé)任編輯:姜華 來(lái)源: 今日頭條
相關(guān)推薦

2021-12-01 08:11:44

Vue3 插件Vue應(yīng)用

2021-12-07 05:44:45

Vue 3 Watch WatchEffect

2023-12-11 07:34:37

Computed計(jì)算屬性Vue3

2021-11-30 08:19:43

Vue3 插件Vue應(yīng)用

2023-11-28 09:03:59

Vue.jsJavaScript

2021-11-16 08:50:29

Vue3 插件Vue應(yīng)用

2021-12-02 05:50:35

Vue3 插件Vue應(yīng)用

2025-10-24 10:47:25

Vue3前端插槽

2022-06-26 00:00:02

Vue3響應(yīng)式系統(tǒng)

2021-12-29 07:51:21

Vue3 插件Vue應(yīng)用

2022-07-14 08:22:48

Computedvue3

2023-11-29 08:49:31

Vue.jsData 函數(shù)

2024-05-27 08:39:17

Vue3變量響應(yīng)式

2021-11-17 08:24:47

Vue3 插件Vue應(yīng)用

2020-09-19 21:15:26

Composition

2021-12-09 08:49:14

Vue 3 Provide Inject

2023-12-14 08:25:14

WatchVue.js監(jiān)聽(tīng)數(shù)據(jù)

2021-11-26 05:59:31

Vue3 插件Vue應(yīng)用

2022-07-20 11:13:05

前端JSONVue3

2025-10-17 07:10:00

前端開(kāi)發(fā)Vue
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)