国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - vue.js - Vue3 學習筆記—Script Setup 語法糖用了才知道有多爽

Vue3 學習筆記—Script Setup 語法糖用了才知道有多爽

2021-12-15 23:21前端人 vue.js

script setup是 vue3 的新語法糖,并不是新增的功能模塊,只是簡化了以往的組合式 API 必須返回(return)的寫法,并且有更好的運行時性能。

Vue3 學習筆記—Script Setup 語法糖用了才知道有多爽

剛開始使用 script setup 語法糖的時候,編輯器會提示這是一個實驗屬性,要使用的話,需要固定 vue 版本。

在 6 月底,該提案被正式定稿,在 v3.1.3 的版本上,繼續使用但仍會有實驗性提案的提示,在 V3.2 中,才會去除提示并移除一些廢棄的 API。

script setup 是啥?

script setup 是 vue3 的新語法糖,并不是新增的功能模塊,只是簡化了以往的組合式 API 必須返回(return)的寫法,并且有更好的運行時性能。

寫法簡便:

  1. <script setup> 
  2. ... 
  3. </script> 

使用 script setup 語法糖時,內部的屬性或方法可以直接使用,無需 return 返回;引入子組件可以自動注冊,無需 components 注冊可直接使用等等,接下來介紹 script setup 語法糖具體使用以及與 setup() 函數的區別。

1、屬性和方法無需返回,可直接使用

setup() 來寫組合式 API 時,內部定義的屬性和方法,必須使用 return 暴露到上下文,外部才能夠使用,否則就會報錯,寫法為:

  1. <template> 
  2.  {{todoList}} 
  3. </template> 
  4. <script> 
  5. export default { 
  6.  setup(){ 
  7.   let todoList = [ 
  8.    {todo:"我想看海",isCheck:false}, 
  9.    {todo:"我想浪漫",isCheck:true}, 
  10.   ] 
  11.   return
  12.    todoList, 
  13.   } 
  14.  } 
  15. </script> 

使用 script setup 語法糖,不需要 return 和 setup函數,只需要全部定義到 script setup 內。

可以簡化上述代碼為:

  1. <template> 
  2.  {{todoList}} 
  3. </template> 
  4. <script setup> 
  5.  let todoList = [ 
  6.   {todo:"我想看海",isCheck:false}, 
  7.   {todo:"我想浪漫",isCheck:true}, 
  8.  ] 
  9. </script> 

2、組件自動注冊

在 script setup 語法糖中,引入的組件可以自動注冊,不需要再通過 components 進行注冊,而且無法指定當前組件的名字,會自動以文件名為主,省去了 name 屬性。

  1. <template> 
  2.  <SetUp></SetUp> 
  3.  <set-up></set-up> 
  4. </template> 
  5. <script setup> 
  6.  import SetUp from "./SetUp.vue" 
  7. </script> 

而在 setup() 寫的組合式 API 中,引入的組件必須在 components 內注冊之后才能使用,否則無法正常引入。

3、組件數據傳遞

父組件給子組件傳值時,需要 props 接收。setup( props, context )接收兩個參數,props 接收傳遞的數據,使用 setup() 接收數據如下:

  1. <template> 
  2.  {{ a }} {{ b }} 
  3. </template> 
  4.  
  5. <script> 
  6. import { toRefs } from "vue" 
  7. export default { 
  8.  setup(props,context){ 
  9.   const { a,b } = toRefs(props) 
  10.   return { 
  11.    a, 
  12.    b 
  13.   } 
  14.  } 
  15. </script> 

而 script setup 語法糖接收 props 中的數據時,使用 defineProps 方法來獲取,可以修改上述代碼為:

  1. <template> 
  2.  {{ a }} {{ b }} 
  3. </template> 
  4.  
  5. <script setup> 
  6. import { toRefs } from "vue" 
  7. const props = defineProps({ 
  8.   a: String, 
  9.   b: String 
  10. }) 
  11. const { a, b } = toRefs( props ) 
  12. </script> 

4、獲取 attrs、slots 和 emits

setup( props, context )接收兩個參數,context 上下文環境,其中包含了屬性、插槽、自定義事件三部分。

setup() 內獲取如下:

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

使用 script setup 語法糖時,

  • useAttrs 方法 獲取 attrs 屬性
  • useSlots 方法獲取 slots 插槽
  • defineEmits 方法獲取 emit 自定義事件
  1. <script setup> 
  2.  import { useAttrs, useSlots } from 'vue' 
  3.  const slots = useSlots(); 
  4.  const attrs = useAttrs(); 
  5.  
  6.  const emits = defineEmits(['getChild']); 
  7. </script> 

5、對外暴露屬性

script setup 語法糖的組件默認不會對外暴露任何內部聲明的屬性。如果有部分屬性要暴露出去,可以使用 defineExpose。

子組件暴露屬性:

  1. <template> 
  2.  {{msg}} 
  3. </template> 
  4.  
  5. <script setup> 
  6. import { ref } from 'vue' 
  7.  
  8. let msg = ref("Child Components"); 
  9.  
  10. // defineExpose無需導入,直接使用 
  11. defineExpose({ 
  12.  msg 
  13. }); 
  14. </script> 

父組件引用子組件暴露的屬性:

  1. <template> 
  2.  <Child ref="child" /> 
  3. </template> 
  4.  
  5. <script setup> 
  6. import { ref, onMounted } from 'vue' 
  7. import Child from './components/Child.vue' 
  8.  
  9. let child = ref(null); 
  10.  
  11. onMounted(() => { 
  12.  console.log(child.value.msg); // Child Components 
  13.  console.log(child.value.num); // 123 
  14. }) 
  15. </script> 

原文鏈接:https://www.toutiao.com/a7033663484797796877/

延伸 · 閱讀

精彩推薦
  • vue.jsVue項目中實現帶參跳轉功能

    Vue項目中實現帶參跳轉功能

    最近做了一個手機端系統,其中遇到了父頁面需要攜帶參數跳轉至子頁面的問題,現已解決,下面分享一下實現過程,感興趣的朋友一起看看吧...

    YiluRen丶4302022-03-03
  • vue.jsVue多選列表組件深入詳解

    Vue多選列表組件深入詳解

    這篇文章主要介紹了Vue多選列表組件深入詳解,這個是vue的基本組件,有需要的同學可以研究下...

    yukiwu6752022-01-25
  • vue.jsVue中引入svg圖標的兩種方式

    Vue中引入svg圖標的兩種方式

    這篇文章主要給大家介紹了關于Vue中引入svg圖標的兩種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的...

    十里不故夢10222021-12-31
  • vue.js梳理一下vue中的生命周期

    梳理一下vue中的生命周期

    看過很多人講vue的生命周期,但總是被繞的云里霧里,尤其是自學的同學,可能js的基礎也不是太牢固,聽起來更是吃力,那我就已個人之淺見,以大白話...

    CRMEB技術團隊7992021-12-22
  • vue.js用vite搭建vue3應用的實現方法

    用vite搭建vue3應用的實現方法

    這篇文章主要介紹了用vite搭建vue3應用的實現方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下...

    Asiter7912022-01-22
  • vue.js詳解vue 表單綁定與組件

    詳解vue 表單綁定與組件

    這篇文章主要介紹了vue 表單綁定與組件的相關資料,幫助大家更好的理解和學習使用vue框架,感興趣的朋友可以了解下...

    Latteitcjz6432022-02-12
  • vue.jsVue2.x 項目性能優化之代碼優化的實現

    Vue2.x 項目性能優化之代碼優化的實現

    這篇文章主要介紹了Vue2.x 項目性能優化之代碼優化的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋...

    優小U9632022-02-21
  • vue.jsVue2.x-使用防抖以及節流的示例

    Vue2.x-使用防抖以及節流的示例

    這篇文章主要介紹了Vue2.x-使用防抖以及節流的示例,幫助大家更好的理解和學習使用vue框架,感興趣的朋友可以了解下...

    Kyara6372022-01-25
主站蜘蛛池模板: 免费的一级黄色片 | 国产一二三区在线观看 | 国产在线一区二区三区 | 亚洲五码在线 | 日韩欧美中文字幕在线观看 | 91精品国产综合久久久久久漫画 | 午夜av一区二区 | 午夜国产影院 | 免费看黄的视频网站 | 国产一区av在线 | 激情婷婷 | 久久久精品免费视频 | 国内精品在线视频 | 中文在线观看视频 | 国产精品久久久久久久一区探花 | 精精国产xxxx视频在线播放7 | 亚洲午夜免费视频 | 午夜电影网址 | 久久国产一区二区 | 欧美成人a | 一区免费看 | 欧美一级特黄aaaaaaa在线观看 | 国产91亚洲精品 | 欧美中文字幕一区二区三区亚洲 | 精品视频二区三区 | 精精国产xxxx视频在线 | 日韩国产一区二区 | 欧美在线高清 | 亚洲激情在线播放 | 日本黄色大片免费看 | 欧美在线高清 | 亚洲欧美日韩在线一区 | 在线观看中文字幕 | 日韩精品视频在线播放 | 免费a级毛片在线观看 | 91久久| 久久久久国产精品免费免费搜索 | 91午夜伦伦电影理论片 | 99热这里有精品 | 国产精品亚洲第一区在线暖暖韩国 | 国产伦乱 |