中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vue3.2中的setup語法怎么使用

發布時間:2022-02-14 19:04:49 來源:億速云 閱讀:247 作者:iii 欄目:編程語言

本篇內容主要講解“Vue3.2中的setup語法怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Vue3.2中的setup語法怎么使用”吧!

Vue3.2中的setup語法怎么使用

vue3.2 到底更新了什么?

根據原文內容的更新的內容主要有以下 5 塊:

1、SSR:服務端渲染優化。@vue/server-renderer包加了一個ES模塊創建

與Node.js解耦,使在非Node環境用@vue/serve-render做服務端渲染成為可能,比如(Workers、Service Workers)

2、New SFC Features:新的單文件組件特性

3、Web Components:自定義 web 組件。這個我們平時很少用到,但是應該知道

4、Effect Scope API: effect 作用域,

用來直接控制響應式副作用的釋放時間(computed 和 watchers)。

這是底層庫的更新,開發不用關心,但是應該知道

5、Performance Improvements:性能提升。這是內部的提升,跟開發無關

setup 的簡單介紹

起初 Vue3.0 暴露變量必須 return 出來,template中才能使用;

這樣會導致在頁面上變量會出現很多次。

很不友好,vue3.2只需在script標簽中添加setup。

可以幫助我們解決這個問題。

1、組件只需引入不用注冊,屬性和方法也不用返回,

也不用寫setup函數,也不用寫export default ,

甚至是自定義指令也可以在我們的template中自動獲得。

變量、方法不需要 return 出來

<template>
  <div class="home">
    顯示的值{{flag }}
    <button @click="changeHander">改變值</button>
  </div>
</template>
<!-- 只需要在script上添加setup -->
<script lang="ts" setup>
    import { ref } from 'vue';

    <!-- flag變量不需要在 return出去了 -->
    let flag=ref("開端-第一次循環")

    <!-- 函數也可以直接引用,不用在return中返回 -->
    let changeHander=():void=>{
        flag.value='開端-第二次循環'
    }

</script>

組件不需要在注冊

<!-- 這個是組件 -->
<template>
    <div>
        <h3> 你好-我是肖鶴云</h3>
    </div>
</template>


使用的頁面
<template>
  <div class="home">
    <test-com></test-com>
  </div>
</template>
<script lang="ts" setup>
// 組件命名采用的是大駝峰,引入后不需要在注冊,是不是爽歪歪呀!
//在使用的使用直接是小寫和橫杠的方式連接 test-com
import TestCom from "../components/TestCom.vue"
</script>

分析引入 setup 后組件的變化

在 script setup 中,
引入的組件可以直接使用無需再通過components進行注冊,[是不是真的很香啊!]
并且無法指定當前組件的名字,它會自動以文件名為主,也就是不用再寫name屬性了。
當我們的頁面上需要使用很多組件時,它的功能一下就體現出來了。

新增 defineProps

剛剛我一直在強調,不需要使用setup函數,機智的小伙伴會說:
那么子組件怎么接受父組件傳遞過來的值呢?
props,emit怎么獲取呢?
別擔心,新的api出現了,我們的主角 defineProps復制代碼

defineProps 的使用

父組件傳遞參數

<template>
  <div class="home">
    <test-com :info="msg" time="42分鐘"></test-com>
  </div>
</template>
<script lang="ts" setup>
// 組件命名采用的是大駝峰,引入后不需要在注冊,是不是爽歪歪呀!
import TestCom from "../components/TestCom.vue"
let msg='公交車-第一次循環'
</script>

子組件接受參數

<template>
    <div>
        <h3> 你好-我是肖鶴云</h3>
        <p>信息:{{ info}}</p>
        <p>{{ time }}</p>
    </div>
</template>
<script lang="ts" setup>
import {defineProps} from 'vue'
defineProps({
    info:{
        type:String,
        default:'----'
    },
    time:{
        type:String,
        default:'0分鐘'
    },
})
</script>

Vue3.2中的setup語法怎么使用

子組件怎么向父組件拋出事件?defineEmits的到來!

子組件使用

別擔心,我們使用defineEmits。它可以像父組件拋出事件。
<template>
    <div>
        <h3> 你好-我是肖鶴云</h3>
        <button @click="hander1Click">新增</button>
        <button @click="hander2Click">刪除</button>
    </div>
</template>

<script lang="ts" setup>
 import {defineEmits} from 'vue'
//  使用defineEmits創建名稱,接受一個數組
let $myemit=defineEmits(['myAdd','myDel'])
let hander1Click=():void=>{
    $myemit('myAdd','新增的數據')
}

let hander2Click=():void=>{
    $myemit('myDel','刪除的數據')
}
</script>

父組件

<template>
  <div class="home">
    <test-com @myAdd="myAddHander" @myDel='myDelHander'></test-com>
  </div>
</template>
<script lang="ts" setup>
// 組件命名采用的是大駝峰,引入后不需要在注冊,是不是爽歪歪呀!
//在使用的使用直接是小寫和橫杠的方式連接 test-com
import TestCom from "../components/TestCom.vue"
let myAddHander=(mess):void=>{
  console.log('新增==>',mess);
}

let myDelHander=(mess):void=>{
  console.log('刪除==>', mess);
}
</script>

Vue3.2中的setup語法怎么使用

如何獲取子組件中的屬性值

子組件

<template>
    <div>
        <h3> 你好-我是肖鶴云</h3>
        <p>性別:{{ sex}}</p>
        <p>其他信息:{{ info}}</p>
    </div>
</template>

<script lang="ts" setup>
import { reactive, ref,defineExpose } from "vue";
let sex=ref('男')
let info=reactive({
    like:'喜歡李詩晴',
    age:27
})
// 將組件中的屬性暴露出去,這樣父組件可以獲取
defineExpose({
    sex,
    info
})
</script>復制代碼

父組件

<template>
  <div class="home">
    <test-com @myAdd="myAddHander" @myDel='myDelHander' ref="testcomRef"></test-com>
    <button @click="getSonHander">獲取子組件中的數據</button>
  </div>
</template>
<script lang="ts" setup>
import TestCom from "../components/TestCom.vue"
import {ref} from 'vue'
const testcomRef = ref()
const getSonHander=()=>{
  console.log('獲取子組件中的性別', testcomRef.value.sex );
  console.log('獲取子組件中的其他信息', testcomRef.value.info );
}
</script>復制代碼

Vue3.2中的setup語法怎么使用

新增指令 v-memo

v-memod會記住一個模板的子樹,元素和組件上都可以使用。
該指令接收一個固定長度的數組作為依賴值進行[記憶比對]。
如果數組中的每個值都和上次渲染的時候相同,則整個子樹的更新會被跳過。
即使是虛擬 DOM 的 VNode 創建也將被跳過,因為子樹的記憶副本可以被重用。
因此渲染的速度會非常的快。
需要注意得是:正確地聲明記憶數組是很重要。
開發者有責任指定正確的依賴數組,以避免必要的更新被跳過。
<li v-for="item in listArr"  :key="item.id"  v-memo="['valueA','valueB']">
    {{ item.name   }}
</li>
v-memod的指令使用較少,它的作用是:緩存模板中的一部分數據。
只創建一次,以后就不會再更新了。也就是說用內存換取時間。復制代碼

style v-bind 該同學已經從實驗室畢業了

經過尤大大和團隊的努力,<style> v-bind 已經從實驗室畢業了。
我們可以使用這個屬性了。爽歪歪!
我們可以在style中去使用變量。是不是感覺很牛逼呀!
現在我們用起來,第一次使用<style> v-bind復制代碼

style v-bind將span變成紅色

<template>
  <span> 有開始循環了-開端 </span>  
</template>
<script setup>
  import { reactive } from 'vue'
  const state = reactive({
    color: 'red'
  })
</script>
<style scoped>
  span {
    /* 使用v-bind綁定state中的變量 */
    color: v-bind('state.color');
  }  
</style>復制代碼

Vue3.2中的setup語法怎么使用

到此,相信大家對“Vue3.2中的setup語法怎么使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

文安县| 尖扎县| 新建县| 左贡县| 博湖县| 蕉岭县| 当阳市| 陈巴尔虎旗| 聂拉木县| 揭阳市| 盱眙县| 改则县| 济阳县| 阿瓦提县| 吉安县| 都江堰市| 沁水县| 满洲里市| 清丰县| 阳东县| 临高县| 安国市| 龙井市| 腾冲县| 綦江县| 清远市| 郯城县| 井冈山市| 新余市| 绥芬河市| 玉屏| 上林县| 桦甸市| 图木舒克市| 金阳县| 全州县| 康保县| 无棣县| 比如县| 尚志市| 光山县|