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

詳解vue3中組件的非兼容變更

 更新時(shí)間:2021年03月03日 15:31:55   作者:月島蘑菇  
這篇文章主要介紹了詳解vue3中組件的非兼容變更,幫助大家更好的理解和學(xué)習(xí)使用vue框架,感興趣的朋友可以了解下

函數(shù)式組件

functional attribute 在單文件組件 (SFC) <template> 已被移除
{ functional: true } 選項(xiàng)在通過函數(shù)創(chuàng)建組件已被移除

// 使用 <dynamic-heading> 組件,負(fù)責(zé)提供適當(dāng)?shù)臉?biāo)題 (即:h1,h2,h3,等等),在 2.x 中,這可能是作為單個(gè)文件組件編寫的:
// Vue 2 函數(shù)式組件示例
export default {
 functional: true,
 props: ['level'],
 render(h, { props, data, children }) {
 return h(`h${props.level}`, data, children)
 }
}

// Vue 2 函數(shù)式組件示例使用 <template>
<template functional>
 <component
 :is="`h${props.level}`"
 v-bind="attrs"
 v-on="listeners"
 />
</template>

<script>
export default {
 props: ['level']
}
</script>

現(xiàn)在在 Vue 3 中,所有的函數(shù)式組件都是用普通函數(shù)創(chuàng)建的,換句話說,不需要定義 { functional: true } 組件選項(xiàng)。
他們將接收兩個(gè)參數(shù):props 和 context。context 參數(shù)是一個(gè)對象,包含組件的 attrs,slots,和 emit property。
此外,現(xiàn)在不是在 render 函數(shù)中隱式提供 h,而是全局導(dǎo)入 h。
使用前面提到的 <dynamic-heading> 組件的示例,下面是它現(xiàn)在的樣子。

// vue3.0
import { h } from 'vue'
const DynamicHeading = (props, context) => {
 return h(`h${props.level}`, context.attrs, context.slots)
}
DynamicHeading.props = ['level']
export default DynamicHeading
// vue3.0單文件寫法
<template>
 <component
 v-bind:is="`h${$props.level}`"
 v-bind="$attrs"
 />
</template>

<script>
export default {
 props: ['level']
}
</script>

主要區(qū)別在于

functional attribute 在 <template> 中移除
listeners 現(xiàn)在作為 $attrs 的一部分傳遞,可以將其刪除

異步組件的寫法與defineAsyncComponent方法

現(xiàn)在使用defineAsyncComponent助手方法,用于顯示的定義異步組件
component選項(xiàng)重命名為loader
Loader函數(shù)本身不再接受resolve和rejuct參數(shù),必須返回一個(gè)Promise

// vue2.x
// 以前異步組件是通過將組件定義為返回Promise的函數(shù)來創(chuàng)建
const asyncPage = () => import('./NextPage.vue')
// 或者以選項(xiàng)方式創(chuàng)建
const asyncPage = {
 component: () => import('./NextPage.vue'),
 delay: 200,
 timeout: 3000,
 error: ErrorComponent,
 loading: LoadingComponent
}

// vue3.x
在vue3.x中,需要使用defineAsyncComponent來定義
import{ defineAsyncComponent } from 'vue'
import ErrorComponent from './components/ErrorComponent.vue'
import LoadingComponent from './components/LoadingComponent.vue'

// 不帶選項(xiàng)的定義方法
const asyncPage = defineAsyncComponent(() => import('./NextPage.vue'))

// 帶選項(xiàng)的異步組件
constasyncPageWithOptions = defineAsyncCopmonent({
 loader: () => import('./NextPage.vue'),
 delay: 200,
 timeout: 3000,
 errorComponent: ErrorComponent,
 LoadingComponent: LoadingComponent
})

loader函數(shù)不再接收resolve和reject參數(shù),且必須始終返回Promise

// vue2.x
const oldAsyncComponent = (resolve, reject) => {}
// vue3.x
const asyncComponent = defineAsyncComponent(() => new Promise((resolve, reject) => {}))

組件事件需要在emits選項(xiàng)中聲明

vue3中現(xiàn)在提供了一個(gè)emits選項(xiàng),類似props選項(xiàng)
此選項(xiàng)可以用于定義組件向其父對象發(fā)出的事件

<!-- vue2.x -->
<template>
 <div>
 <p>{{ text }}</p>
 <button v-on:click="$emit('accepted')">OK</button>
 </div>
</template>
<script>
 export default {
 props: ['text']
 }
</script>

<!-- vue3.x -->
<!-- 現(xiàn)在和prop類似,可以用emits來定義組件發(fā)出的事件 -->
<!-- 這個(gè)選項(xiàng)還接收已給對象,用來向props一樣對傳遞的參數(shù)進(jìn)行驗(yàn)證 -->
<!-- 強(qiáng)烈建議記錄下每個(gè)組件發(fā)出的所有emits,因?yàn)槿サ袅?native修飾符,未使用聲明的事件的所有監(jiān)聽器都將包含在組建的$attr中,默認(rèn)情況下,該監(jiān)聽器將綁定到組件的根節(jié)點(diǎn) -->
<template>
 <div>
 <p>{{ text }}</p>
 <button v-on:click="$emit('accepted')">OK</button>
 </div>
</template>
<script>
 export default {
 props: ['text'],
 emits: ['accepted']
 }
</script>

以上就是詳解vue3中組件的非兼容變更的詳細(xì)內(nèi)容,更多關(guān)于vue3中組件的非兼容變更的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Vue 權(quán)限控制的兩種方法(路由驗(yàn)證)

    Vue 權(quán)限控制的兩種方法(路由驗(yàn)證)

    這篇文章主要介紹了Vue 權(quán)限控制的兩種方法(路由驗(yàn)證),每種方法給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • vue+echarts動(dòng)態(tài)更新數(shù)據(jù)及數(shù)據(jù)變化重新渲染方式

    vue+echarts動(dòng)態(tài)更新數(shù)據(jù)及數(shù)據(jù)變化重新渲染方式

    這篇文章主要介紹了vue+echarts動(dòng)態(tài)更新數(shù)據(jù)及數(shù)據(jù)變化重新渲染方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 講解vue-router之什么是動(dòng)態(tài)路由

    講解vue-router之什么是動(dòng)態(tài)路由

    這篇文章主要介紹了講解vue-router之什么是動(dòng)態(tài)路由,詳細(xì)的介紹了什么是動(dòng)態(tài)路由,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • Vue?2中實(shí)現(xiàn)CustomRef方式防抖節(jié)流

    Vue?2中實(shí)現(xiàn)CustomRef方式防抖節(jié)流

    這篇文章主要為大家介紹了Vue?2中實(shí)現(xiàn)CustomRef方式防抖節(jié)流示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • webpack+vue-cli項(xiàng)目中引入外部非模塊格式j(luò)s的方法

    webpack+vue-cli項(xiàng)目中引入外部非模塊格式j(luò)s的方法

    今天小編就為大家分享一篇webpack+vue-cli項(xiàng)目中引入外部非模塊格式j(luò)s的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vue 父組件調(diào)用子組件方法及事件

    vue 父組件調(diào)用子組件方法及事件

    這篇文章主要介紹了vue 父組件調(diào)用子組件方法及事件的相關(guān)資料,父組件傳入數(shù)組子組件循環(huán)來創(chuàng)建不同的組件模塊,所有事件都在子組件內(nèi)部.怎么實(shí)現(xiàn)這樣一個(gè)功能呢?接下來跟隨腳本之家小編一起看看吧
    2018-03-03
  • vue2?element?實(shí)現(xiàn)表格點(diǎn)擊詳情返回時(shí)保留查詢參數(shù)的示例代碼

    vue2?element?實(shí)現(xiàn)表格點(diǎn)擊詳情返回時(shí)保留查詢參數(shù)的示例代碼

    這篇文章主要介紹了vue2?element?實(shí)現(xiàn)表格點(diǎn)擊詳情返回時(shí)保留查詢參數(shù)的示例代碼,本文通過圖文示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • Vue cli 引入第三方JS和CSS的常用方法分享

    Vue cli 引入第三方JS和CSS的常用方法分享

    下面小編就為大家分享一篇Vue cli 引入第三方JS和CSS的常用方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • Vue項(xiàng)目中缺少明顯入口文件的原因及解決策略

    Vue項(xiàng)目中缺少明顯入口文件的原因及解決策略

    本文探討了Vue項(xiàng)目中缺少明顯入口文件的原因,并提供了解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • Vue守衛(wèi)零基礎(chǔ)介紹

    Vue守衛(wèi)零基礎(chǔ)介紹

    導(dǎo)航守衛(wèi)就是路由跳轉(zhuǎn)過程中的一些鉤子函數(shù),這個(gè)過程中觸發(fā)的這些函數(shù)能讓你有操作一些其他的事兒的時(shí)機(jī),這就是導(dǎo)航守衛(wèi),守衛(wèi)適用于切面編程,即把一件事切成好幾塊,然后分給不同的人去完成,提高工作效率,也可以讓代碼變得更加優(yōu)雅
    2022-09-09

最新評論

武邑县| 博客| 华阴市| 襄樊市| 茂名市| 泰和县| 盖州市| 信阳市| 仪陇县| 黄大仙区| 无锡市| 大渡口区| 密山市| 灵宝市| 廊坊市| 清远市| 宁乡县| 萨迦县| 新晃| 铁岭县| 泰宁县| 太仓市| 乌拉特中旗| 莎车县| 华蓥市| 莱芜市| 泗水县| 东乌珠穆沁旗| 盐津县| 湖北省| 崇阳县| 中牟县| 城市| 綦江县| 宝清县| 栾城县| 伊吾县| 广昌县| 临夏市| 封丘县| 海宁市|