精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Vue3 學(xué)習(xí)筆記—Vue3 setup() 高級用法

開發(fā) 前端
由于選項式API一個變量存在于多處,如果出現(xiàn)問題時,就需要去多個函數(shù)內(nèi)檢查,項目較大時,遇到問題,增加排故的難度。所以 vue3 中新增了 setup 配置項,用它來寫組合式API。

[[437729]]

從 vue2 升級到 vue3,vue3 是可以兼容 vue2 的,所以 vue3 可以采用 vue2 的選項式API。由于選項式API一個變量存在于多處,如果出現(xiàn)問題時,就需要去多個函數(shù)內(nèi)檢查,項目較大時,遇到問題,增加排故的難度。所以 vue3 中新增了 setup 配置項,用它來寫組合式API。

一、選項式API 和 組合式API 區(qū)別

有些同學(xué)稀里糊涂用了vue一年了,竟然不知道選項式api !你是那個同學(xué)嗎?是的話,趕緊收藏起來。

vue2 中的 Options API 就是選項式api,一個中文,一個英文,怎么叫都可以。

在一個 vue 文件內(nèi),會有 data、methods、mounted、computed、watch 等等用來定義屬性和方法,共同來處理頁面邏輯,我們把這種方式稱為 Options API。

示例1:計數(shù)器

  1. <template> 
  2.  <div> 
  3.   <button @click="add">+</button> 
  4.    {{num}} 
  5.   <button @click="reduce">-</button> 
  6.  </div> 
  7. </template> 
  8. <script> 
  9. export default { 
  10.  data(){ 
  11.   return { 
  12.    num:0 
  13.   } 
  14.  }, 
  15.  methods:{ 
  16.   add(){ 
  17.    this.num++ 
  18.   }, 
  19.   reduce(){ 
  20.    this.num-- 
  21.   } 
  22.  } 
  23. </script> 

觀察上述示例,我們發(fā)現(xiàn) num 值的處理涉及到 data 和 methods 兩個選項,業(yè)務(wù)處理的比較分散,項目小了看著清晰明了,但是項目變大之后,data 和 methods會包含很多屬性和方法,此時就很難分清哪個屬性對應(yīng)哪個方法。所以 vue3 新增 setup 寫組合式API。

Vue3 的 Composition API 就是組合式api。

組合式api 就是一個功能所定義的 api 會放在一起,這樣子即使項目變大,功能增大,我們能夠很快找到功能相關(guān)的所有api,不像 Options API 功能分散,需要改動時,需要多處查找過程比較困難。

示例2:計數(shù)器

  1. <template> 
  2.  <div> 
  3.   <button @click="add">+</button> 
  4.    {{num}} 
  5.   <button @click="reduce">-</button> 
  6.  </div> 
  7. </template> 
  8. <script> 
  9.  import { ref } from 'vue' 
  10.  export default
  11.   setup(){ 
  12.    const num = ref(1) 
  13.    return
  14.     num, 
  15.     add(){ 
  16.      num.value++ 
  17.     }, 
  18.     reduce(){ 
  19.      num.value-- 
  20.    } 
  21.   } 
  22.  } 
  23. </script> 

ref 是讓基礎(chǔ)數(shù)據(jù)類型具備響應(yīng)式的,下篇文章具體介紹它的用法,需要的同學(xué)可以點個關(guān)注不迷路!

用一張圖告訴你它們的區(qū)別:

vue3 學(xué)習(xí)筆記 (四)——vue3 setup() 高級用法

二、setup 具體怎么用?

2.1、setup 什么時候執(zhí)行?

setup 用來寫組合式 api,從生命周期鉤子函數(shù)角度分析,相當(dāng)于取代了 beforeCreate 。會在 creted 之前執(zhí)行。

  1. <script> 
  2.  export default
  3.   created(){ 
  4.    console.log('created'); 
  5.   }, 
  6.   setup(){ 
  7.    console.log('setup'); 
  8.   } 
  9.  } 
  10. </script> 

執(zhí)行之后,setup 打印結(jié)果始終在前邊。

2.2、setup 數(shù)據(jù)和方法如何使用?

示例3:直接定義使用變量

  1. <template> 
  2.  {{a}} 
  3. </template> 
  4. <script> 
  5.  export default
  6.   setup(){ 
  7.    const a = 0 
  8.   } 
  9.  } 
  10. </script> 

運行后發(fā)現(xiàn)結(jié)果異常:

runtime-core.esm-bundler.js?5c40:6584 [Vue warn]: Property "a" was accessed during render but is not defined on instance.

提示我們訪問的屬性 a 并沒有掛載到實例上。

setup 內(nèi)部的屬性和方法,必須 return 暴露出來,將屬性掛載到實例上,否則沒有辦法使用,上述代碼添加 return:

  1. <script> 
  2.  export default
  3.   setup(){ 
  4.    const a = 0 
  5.    return
  6.     a 
  7.    } 
  8.   } 
  9.  } 
  10. </script> 

2.3、setup 內(nèi)部有 this 嗎?

自己在 setup 中打印下 this ,返回結(jié)果 是undefined 。說明在 setup 內(nèi)部是不存在 this ,不能掛載 this 相關(guān)的東西。

2.4、setup 內(nèi)鉤子函數(shù)如何使用?

vue3 是可以兼容 vue2 的選項式寫法,所以 鉤子函數(shù)可以與 setup 并列存在,就相當(dāng)于 Options API。

示例4:

  1. export default
  2.  setup(){ 
  3.   console.log('setup'); 
  4.  }, 
  5.  mounted(){ 
  6.   console.log('mounted'); 
  7.  } 

 vue3 新增的 setup() 函數(shù)用來寫組合式 api,所以不建議這樣寫代碼。所以需要使用 onXXX 一族的函數(shù)來注冊鉤子函數(shù),注冊成功之后調(diào)用時傳遞的是一個回調(diào)函數(shù)。

示例5:

  1. import { onMounted } from "vue"
  2. export default
  3.  setup(){ 
  4.   const a = 0 
  5.   return
  6.    a 
  7.   }, 
  8.   onMounted(()=>{ 
  9.    console.log("執(zhí)行"); 
  10.  }) 
  11.  } 

 注冊的這些生命周期鉤子函數(shù)只能在 setup 期間同步使用,因為它們依賴全局內(nèi)部狀態(tài)來定位當(dāng)前組件實例,不在當(dāng)前組件下調(diào)用函數(shù)時會拋出錯誤。

其他的鉤子函數(shù)是一樣的,根據(jù)需要引入就好了。

2.5、setup與鉤子函數(shù)關(guān)系

setup 與鉤子函數(shù)并列時,setup 不能調(diào)用生命周期相關(guān)函數(shù),但生命周期可以調(diào)用 setup 相關(guān)的屬性和方法。

示例6:

  1. <template> 
  2.  <button @click="log">點我</button> 
  3. </template> 
  4. <script> 
  5. export default
  6.  setup(){ 
  7.   const a = 0 
  8.   return
  9.    a 
  10.   } 
  11.  }, 
  12.  methods:{ 
  13.   log(){ 
  14.    console.log( this.$options.setup() );//返回一個對象 
  15.   } 
  16.  } 
  17. </script> 

this.$options.setup() 返回的是一個大對象,該對象內(nèi)包含了 setup 內(nèi)的所有屬性和方法。

三、setup 參數(shù)

使用setup 時,它將接收兩個參數(shù):props 和 context 。

3.1、props

第一個參數(shù)是 props ,表示父組件給子組件傳值,props 是響應(yīng)式的,當(dāng)傳入新的 props 時,自動更新。

示例7:

  1. export default
  2.  props: { 
  3.   msg: String, 
  4.   ans: String, 
  5.  }, 
  6.  setup(props,context){ 
  7.   console.log(props);//Proxy {msg: "著急找對象", ans: "你有對象嗎?"
  8.  }, 

 因為 props 是響應(yīng)式的,不能使用 ES6 解構(gòu),會消除prop的響應(yīng)特性,此時需要借用 toRefs 解構(gòu)。示例8:

  1. import { toRefs } from "vue"
  2.  export default
  3.   props: { 
  4.    msg: String, 
  5.    ans: String, 
  6.   }, 
  7.   setup(props,context){ 
  8.    console.log(props); 
  9.    const { msg,ans } = toRefs(props) 
  10.    console.log(msg.value); //著急找對象 
  11.    console.log(ans.value); //你有對象嗎? 
  12.   }, 
  13.  } 

 使用組件時,經(jīng)常會遇到可選參時,有些地方需要傳遞某個值,有些時候不需要,該如何處理呢?

如果 ans 是一個可選參數(shù),則傳入 props 中可能沒有 ans 。在這種情況下 toRefs 將不會為 ans 創(chuàng)建一個 ref ,需要使用 toRef 代替它。

  1. import { toRef } from "vue"
  2. setup(props,context){ 
  3.  let ans  = toRef(props ,'ans')// 不存在時,創(chuàng)建一個ans 
  4.  console.log(ans.value); 

3.2、context

context 上下文環(huán)境,其中包含了 屬性、插槽、自定義事件三部分。

  1. setup(props,context){ 
  2.  const { attrs,slots,emit } = context 
  3.  // attrs 獲取組件傳遞過來的屬性值, 
  4.  // slots 組件內(nèi)的插槽 
  5.  // emit 自定義事件 子組件 

 attrs 是一個非響應(yīng)式對象,主要接收 no-props 屬性,經(jīng)常用來傳遞一些樣式屬性。

slots 是一個 proxy 對象,其中 slots.default() 獲取到的是一個數(shù)組,數(shù)組長度由組件的插槽決定,數(shù)組內(nèi)是插槽內(nèi)容。

setup 內(nèi)不存在this,所以 emit 用來替換 之前 this.$emit 的,用于子傳父時,自定義事件觸發(fā)。

示例9:

  1. <template> 
  2.  <div :style="attrs.style"
  3.   <slot></slot>   
  4.   <slot name="hh"></slot> 
  5.   <button @click="emit('getVal','傳遞值')">子向父傳值</button>  
  6.  </div>  
  7. </template> 
  8. <script> 
  9. import { toRefs,toRef } from "vue"
  10. export default
  11.  setup(props,context){ 
  12.   const { attrs,slots,emit } = context 
  13.   // attrs 獲取組件傳遞過來 style 屬性 
  14.  console.log('slots',slots.default());//插槽數(shù)組 
  15.  console.log('插槽屬性',slots.default()[1].props); //獲取插槽的屬性    
  16.  return
  17.   attrs, 
  18.   emit 
  19.    } 
  20.   }, 
  21.  } 
  22. </script> 

四、setup 特性總結(jié)

1、這個函數(shù)會在 created 之前執(zhí)行,上述已解釋。

2、setup 內(nèi)部沒有 this,不能掛載 this 相關(guān)的東西。

3、setup 內(nèi)部的屬性和方法,必須 return 暴漏出來,否則沒有辦法使用。

4、setup 內(nèi)部數(shù)據(jù)不是響應(yīng)式的。

5、setup不能調(diào)用生命周期相關(guān)函數(shù),但生命周期函數(shù)可以調(diào)用setup內(nèi)的函數(shù)。

 

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

2021-12-02 05:50:35

Vue3 插件Vue應(yīng)用

2021-11-30 08:19:43

Vue3 插件Vue應(yīng)用

2023-11-28 09:03:59

Vue.jsJavaScript

2021-12-08 09:09:33

Vue 3 Computed Vue2

2021-11-16 08:50:29

Vue3 插件Vue應(yīng)用

2021-12-29 07:51:21

Vue3 插件Vue應(yīng)用

2025-10-24 10:47:25

Vue3前端插槽

2020-09-19 21:15:26

Composition

2023-11-29 08:49:31

Vue.jsData 函數(shù)

2022-02-18 09:39:51

Vue3.0Vue2.0Script Set

2023-12-11 07:34:37

Computed計算屬性Vue3

2021-12-15 08:23:42

Vue3 插件Vue應(yīng)用

2023-04-27 11:07:24

Setup語法糖Vue3

2021-11-26 05:59:31

Vue3 插件Vue應(yīng)用

2025-11-19 08:23:42

2021-11-17 08:24:47

Vue3 插件Vue應(yīng)用

2023-12-14 08:25:14

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

2025-10-17 07:10:00

前端開發(fā)Vue

2024-03-12 12:27:00

Vue 3前端開發(fā)

2021-05-26 10:40:28

Vue3TypeScript前端
點贊
收藏

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

欧美人妇做爰xxxⅹ性高电影| 97精品国产露脸对白| 日韩视频免费中文字幕| gai在线观看免费高清| 污污影院在线观看| 99精品视频一区二区| 国产精品高清免费在线观看| 亚洲综合网在线| 午夜a一级毛片亚洲欧洲| 欧美综合视频在线观看| 中文字幕色呦呦| 极品美乳网红视频免费在线观看| 久久机这里只有精品| 性色av一区二区三区在线观看| 中文字字幕码一二三区| 国产一区二区视频在线看| 五月婷婷另类国产| 国产a级片免费看| 你懂得在线网址| 高清在线成人网| 成人h视频在线| 亚洲熟妇无码乱子av电影| 91久久电影| 亚洲人成网站免费播放| 中文字幕人妻熟女在线| 成人一区视频| 色天天综合久久久久综合片| 欧美黄色免费网址| 免费黄网站在线| 久久久久免费观看| 精品欧美国产一区二区三区不卡| 97caocao| 蜜桃免费网站一区二区三区 | 国产探花在线观看| 国产精品久久久久aaaa| 日本视频一区二区在线观看| 免费的黄色av| 福利91精品一区二区三区| 国产深夜精品福利| 中文字幕乱码视频| 国产精品久久久久久久久久妞妞| 蜜臀久久99精品久久久久久宅男| www.com.av| 精品国产乱码久久久久久果冻传媒 | 国产又大又长又粗| 美腿丝袜在线亚洲一区| 日本精品一区二区三区在线播放视频 | 免费黄色成人| 日韩精品免费在线视频| 少妇一级淫片免费放播放| 午夜电影一区| 亚洲精品在线免费观看视频| 在线播放国产视频| 色妞ww精品视频7777| 日韩午夜在线影院| 农村末发育av片一区二区 | 久久久久九九九| 欧美色视频免费| 久久久影视传媒| 欧美资源一区| 成人在线高清视频| 国产精品网曝门| 先锋影音欧美| 国产精品实拍| 亚洲资源在线观看| 国产精品无码av在线播放| 九色porny丨入口在线| 偷拍与自拍一区| 国产一区二区视频免费在线观看| 欧美自拍电影| 欧美日韩成人综合| 1314成人网| 欧美毛片免费观看| 亚洲天堂av在线免费| 国产毛片欧美毛片久久久| 久久视频在线| 欧美精品国产精品日韩精品| 国产欧美一区二区三区在线看蜜臂| 久久国产精品亚洲77777| 国产国语刺激对白av不卡| 中文字幕av久久爽| 国产一区二区91| 国产精品一区二区a| 日韩福利一区二区| 中文字幕制服丝袜成人av| 青青视频免费在线| 一区二区三区四区日本视频| 欧美丝袜自拍制服另类| 亚洲欧美日韩一二三区| 国内自拍欧美| 中文字幕成人在线| 精品在线免费观看视频| 天堂蜜桃一区二区三区| 91精品啪aⅴ在线观看国产| 成人午夜视频一区二区播放| 久久精品亚洲麻豆av一区二区 | 国产综合自拍| 国产成人精品优优av| 国产麻豆免费视频| 91女神在线视频| 欧美亚洲视频一区| 一个人看的www视频在线免费观看 一个人www视频在线免费观看 | 亚洲视频电影| 国产黄大片在线观看| 欧美日韩国产一级片| 高清中文字幕mv的电影| 日韩aaaa| 91国在线精品国内播放| 国产又粗又长视频| 91视视频在线观看入口直接观看www | 欧美性高潮在线| 17c国产在线| 日本天堂一区| 欧美成人在线网站| 亚洲 小说区 图片区| 成人动漫一区二区| 中文字幕一区二区三区在线乱码 | 国产精品色网| 99国产超薄丝袜足j在线观看 | 一区二区三区免费在线观看| 亚洲成人福利在线观看| 国产福利一区二区精品秒拍| 久久手机免费视频| 中文字幕av资源| 久久新电视剧免费观看| 免费特级黄色片| 精品视频在线观看免费观看| 中日韩美女免费视频网址在线观看 | 91麻豆精品国产自产在线| 国产女主播喷水高潮网红在线| 亚洲香蕉网站| 91精品久久久久久蜜桃| 91在线看黄| 色婷婷狠狠综合| 超碰97在线资源站| 亚洲免费大片| 国产一级特黄a大片99| 性欧美videos高清hd4k| 欧美精品丝袜中出| 男人在线观看视频| 久久国产精品一区二区| 亚洲激情电影在线| 巨胸喷奶水www久久久免费动漫| 亚洲免费电影在线观看| 亚洲 欧美 日韩 综合| 成人av手机在线观看| 久久手机在线视频| 日韩在线观看中文字幕| 欧美国产日本高清在线| www久久久久久| 一区二区三区蜜桃| 日本黄色录像片| 日韩视频久久| 久久影院理伦片| 欧美成人精品三级网站| 伊人久久大香线蕉av一区二区| 中文字幕av第一页| 日本一区二区动态图| 免费看国产黄色片| 我不卡影院28| 动漫3d精品一区二区三区| 24小时免费看片在线观看| 日韩av在线天堂网| 无码人妻精品一区二区三区蜜桃91 | 国产欧美不卡| 欧美资源一区| 色综合.com| 欧美乱大交xxxxx另类电影| 精品人妻久久久久一区二区三区 | 亚洲精品国产无套在线观| 日本wwww色| 国产日韩1区| 日韩三级电影| 精品一区91| 2019中文字幕免费视频| 岛国最新视频免费在线观看| 欧美日韩1234| 国产福利拍拍拍| 中文字幕不卡的av| 又色又爽又黄18网站| 另类av一区二区| av不卡在线免费观看| 91精品久久久久久综合五月天 | 色偷偷888欧美精品久久久| 99久久精品国产一区二区成人| 婷婷综合另类小说色区| 欧美另类69xxxx| 成人高清免费观看| 亚洲人视频在线| 国产欧美日本| 99热一区二区三区| 免费短视频成人日韩| 91欧美日韩一区| 中国字幕a在线看韩国电影| 色天天综合狠狠色| 日韩资源在线| 欧美一区二区视频免费观看| 中文字幕超碰在线| 一区二区欧美精品| 国产午夜精品福利视频| 成人免费视频视频在线观看免费| 日本老熟妇毛茸茸| 激情欧美国产欧美| 亚洲欧洲国产精品久久| 红杏一区二区三区| 亚洲一区二区三区在线视频 | 国产精品美女久久| gratisvideos另类灌满| 日韩在线不卡视频| 黄色小视频在线观看| 亚洲电影成人av99爱色| 一级日韩一级欧美| 欧美性极品xxxx做受| 久久精品第一页| 亚洲人吸女人奶水| 国产免费嫩草影院| 久久久久国产精品人| 精品视频站长推荐| 国产99精品视频| 亚洲精品中文字幕乱码无线| 日日骚欧美日韩| 久久久999视频| 精品成人国产| 亚洲精品久久久久久久蜜桃臀| 五月天久久久| 亚洲欧美电影在线观看| 亚洲性视频大全| 精品欧美一区二区久久久伦| 成人资源在线| 国产精品久久久对白| 欧洲精品99毛片免费高清观看| 成人xxxx视频| 国产亚洲欧美日韩精品一区二区三区| 日本精品久久久久影院| 中文字幕人成乱码在线观看| 97精品欧美一区二区三区| av电影免费在线观看| 久久精品国产欧美亚洲人人爽| 91av资源在线| 日韩亚洲综合在线| 久草资源在线| 欧美成年人视频网站欧美| 欧美18一19xxx性| 精品国产一区二区在线 | 欧美国产亚洲精品久久久8v| 国产原创精品视频| 久久中文字幕在线| 影音先锋在线视频| 欧美大片第1页| 色呦呦在线看| 欧美激情极品视频| 91精品国产黑色瑜伽裤| 性欧美办公室18xxxxhd| 男人久久天堂| 热久久这里只有| 亚洲爱爱视频| 91久久在线播放| 亚洲一区网址| 久久精品aaaaaa毛片| 国产成人黄色| 亚洲成人自拍| 综合久久精品| 男人添女人下面高潮视频| 国产深夜精品| 欧美自拍小视频| 国内欧美视频一区二区| 91成人在线观看喷潮蘑菇| 99精品视频一区| 18精品爽国产三级网站| 亚洲日本va在线观看| xxxxxx国产| 91黄色激情网站| 国产有码在线观看| 精品999久久久| 男人天堂资源在线| 久久精品国产一区二区三区| 性欧美猛交videos| 欧美洲成人男女午夜视频| 国产一区二区三区影视| 91在线视频导航| 黄色免费大全亚洲| 亚洲第一导航| 国产精品观看| 热久久精品免费视频| 国内精品久久久久影院色| 美女黄色一级视频| 日本一区二区视频在线| 国产精品久久久久久久精| 欧美午夜激情小视频| 亚洲综合视频在线播放| 亚洲精品www久久久| 在线免费观看黄色av| 国内精品久久久久久中文字幕| 欧美xnxx| 国产一区二区不卡视频在线观看| 日韩在线观看一区 | 色中文字幕在线观看| 91久久中文| 日韩在线一区视频| 久久精品综合网| 青青草在线观看视频| 欧美午夜理伦三级在线观看| 可以免费看毛片的网站| 久久九九国产精品怡红院 | 欧美亚洲国产一区二区三区va | 精品国产鲁一鲁****| 欧美久久综合性欧美| 欧美1区视频| 国产精品久久a| 99riav一区二区三区| 午夜爽爽爽男女免费观看| 色综合天天做天天爱| 欧美性受xxxx狂喷水| 日韩小视频在线| 久久野战av| 狠狠色狠狠色综合人人| 欧美在线免费一级片| 在线免费视频一区| 久久久久久久久久久久久夜| 国产精品成人久久| 日韩欧美精品三级| 日本不卡视频| 国产精品免费一区二区三区都可以| 国产精品色呦| 99热这里只有精品免费| 另类人妖一区二区av| 少妇久久久久久久久久| 性做久久久久久久免费看| av中文在线观看| www.日韩视频| 免费视频观看成人| 视频一区二区三区在线观看| 美日韩精品视频| 素人fc2av清纯18岁| 狠狠综合久久av一区二区小说| 黄色www视频| 欧美激情小视频| 丁香五月缴情综合网| 欧美日韩激情四射| 国产成人免费视频网站| 青娱乐在线视频免费观看| 538在线一区二区精品国产| 97电影在线观看| 91精品啪在线观看麻豆免费| 亚洲乱码精品| 男生和女生一起差差差视频| 一区在线播放视频| 国产手机视频在线| 九九热99久久久国产盗摄| 欧洲一区在线| 野外做受又硬又粗又大视频√| 成人午夜免费av| 国产无遮挡免费视频| 亚洲精品国产精品久久清纯直播| 国产精品vvv| 欧美男人的天堂| 日本午夜一区二区| 精品一区二区在线观看视频| 欧美福利电影网| 天堂va在线| 国产综合 伊人色| 久久av在线| 波兰性xxxxx极品hd| 日韩一区二区在线免费观看| 国产又色又爽又黄刺激在线视频| 国内精品久久久久久久果冻传媒| 久久婷婷麻豆| 三级黄色录像视频| 欧美大片在线观看一区| 成av人片在线观看www| 日本不卡一区二区三区在线观看| 免费在线观看成人| 激情五月少妇a| 亚洲人成在线观| 精品亚洲二区| 国产熟女高潮视频| 中文字幕亚洲成人| 五月激情六月婷婷| 国产欧美最新羞羞视频在线观看| 亚洲最大av| 亚洲一级中文字幕| 91麻豆精品国产91久久久久 | 国产精品自拍视频| 伊人成年综合电影网| 91精品国自产在线| 精品剧情v国产在线观看在线| 欧美最新精品| 国产精品一线二线三线| 日本一区二区免费在线| 国产 欧美 精品| 国产精品视频免费在线观看| 1024成人| 国产精品视频一区二区在线观看| 亚洲国产精品成人av| 日韩电影精品| 日韩av在线第一页| 一区二区三区四区激情| 成人免费高清在线播放| 国产一级精品aaaaa看| 国内成人精品2018免费看|