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

詳解vue3中渲染函數(shù)的非兼容變更

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

渲染函數(shù)API變更

此更改不會影響到<template>用戶

  • h現(xiàn)在全局導(dǎo)入,而非作為參數(shù)傳遞給渲染函數(shù)
  • 渲染函數(shù)參數(shù)更改為在有狀態(tài)組件和函數(shù)組件之間更加一致
  • vnode現(xiàn)在又一個扁平的prop結(jié)構(gòu)

Render函數(shù)參數(shù)

// 2.0 渲染函數(shù)
export default {
 render(h) {
  return h('div')
 }
}

// 3.x語法
export default {
 render() {
  return h('div')
 }
}

渲染函數(shù)簽名更改

// 2.x
export default {
 render(h) {
  return h('div')
 }
}

// 3.x
import { h, reactive } from 'vue'
export default {
 setup(prop, {slots, attrs, emit}) {
  const state = reactive({
   count: 0
  })
  function increment() {
   state.count++
  }
  // 返回render函數(shù)
  return () => h(
   'div',
   {
    onClick: increment
   },
   state.count
  )
 }
}

VNode Props 格式化

// 2.x
{
 class: ['button', 'is-outlined'],
 style: {color: '#fffff'},
 attr: {id: 'submit'},
 domProps: {innerHTML: ''},
 on: {click: submitForm},
 key: 'submit-button'
}
// 3.x VNode的結(jié)構(gòu)是扁平的
{
 class: ['button', 'is-outlined'],
 style: { color: '#34495E' },
 id: 'submit',
 innerHTML: '',
 onClick: submitForm,
 key: 'submit-button'
}

slot統(tǒng)一

更改了普通slot和作用域slot

  • this.$slots現(xiàn)在將slots作為函數(shù)公開
  • 移除this.$scopedSlots
// 2.x
h(LayoutComponent, [
 h('div', {slot: 'header'}, this.header),
 h('div', {slot: 'header'}, this.header)
])
// 作用域slot:


// 3.x
h(LayoutComponent, {}, {
 header: () => h('div', this.header),
 content: () => h('div', this.content)
})
// 需要以編程方式引入作用域slot時,他們現(xiàn)在被統(tǒng)一在了$slots選項(xiàng)中
// 2.x的作用域slot
this.$scopedSlots.header
// 3.x的寫法
this.$slots.header

移除$listeners

$listeners對象在vue3中已經(jīng)移除,現(xiàn)在事件監(jiān)聽器是$attrs的一部分

在vue2中,可以使用this.attrs和this.attrs和this.listeners分別訪問傳遞給組件的attribute和時間監(jiān)聽器,結(jié)合inheritAttrs: false,開發(fā)者可以將這些attribute和監(jiān)聽器應(yīng)用到其他元素,而不是根元素

<template>
<label>
 <input type="text" v-bind="$attrs" v-on="$listeners">
</label>
</template>
<script>
 export default {
  inheritAttrs: false
 }
</script>

在vue的虛擬DOM中,事件監(jiān)聽器現(xiàn)在只是以on為前綴的attribute,這樣就成了attrs對象的一部分,這樣attrs對象的一部分,這樣listeners就被移除了

<template>
 <label>
  <input type="text" v-bind="$attrs" />
 </label>
</template>
<script>
export default {
 inheritAttrs: false
}
// 如果這個組件接收一個 id attribute 和一個 v-on:close 監(jiān)聽器,那么 $attrs 對象現(xiàn)在將如下所示
{
 id: 'my-input',
 onClose: () => console.log('close Event Triggered')
}
</script>

$attrs現(xiàn)在包括class和style

現(xiàn)在的$attr包含所有的attribute,包括class和style

在2.x中,虛擬dom會對class和style進(jìn)行特殊處理,所以他們不包括在$attr中
在使用inheritAttr: false的時候會產(chǎn)生副作用

  • $attrs 中的 attribute 不再自動添加到根元素中,而是由開發(fā)者決定在哪添加。
  • 但是 class 和 style 不屬于 $attrs,仍然會應(yīng)用到組件的根元素:
<template>
 <label>
  <input type="text" v-bind="$attrs" />
 </label>
</template>
<script>
export default {
 inheritAttrs: false
}
</script>
<!-- 寫入 -->
<my-component id="my-id" class="my-class"></my-component>
<!-- vue2 將生成 -->
<label class="my-class">
 <input type="text" id="my-id" />
</label>
<!-- vue3 將生成 -->
<label>
 <input type="text" id="my-id" class="my-class" />
</label>

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

相關(guān)文章

  • Vue.js實(shí)現(xiàn)簡單計(jì)時器應(yīng)用

    Vue.js實(shí)現(xiàn)簡單計(jì)時器應(yīng)用

    這篇文章主要為大家詳細(xì)介紹了Vue.js實(shí)現(xiàn)簡單計(jì)時器應(yīng)用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Vue3實(shí)現(xiàn)通過axios來讀取本地json文件

    Vue3實(shí)現(xiàn)通過axios來讀取本地json文件

    這篇文章主要介紹了Vue3實(shí)現(xiàn)通過axios來讀取本地json文件方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 富文本編輯器quill.js?開發(fā)之自定義插件示例詳解

    富文本編輯器quill.js?開發(fā)之自定義插件示例詳解

    這篇文章主要為大家介紹了富文本編輯器quill.js?開發(fā)之自定義插件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • vue實(shí)現(xiàn)高德地圖添加多個點(diǎn)標(biāo)記

    vue實(shí)現(xiàn)高德地圖添加多個點(diǎn)標(biāo)記

    地圖多點(diǎn)標(biāo)注其實(shí)是個非常簡單的問題,這篇文章主要給大家介紹了關(guān)于vue實(shí)現(xiàn)高德地圖添加多個點(diǎn)標(biāo)記的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • vue 點(diǎn)擊按鈕增加一行的方法

    vue 點(diǎn)擊按鈕增加一行的方法

    今天小編就為大家分享一篇vue 點(diǎn)擊按鈕增加一行的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • Vue項(xiàng)目中打包優(yōu)化的四種方法詳解

    Vue項(xiàng)目中打包優(yōu)化的四種方法詳解

    最近入職了新公司,接手了一個新拆分出來的Vue項(xiàng)目,針對該項(xiàng)目做了個打包優(yōu)化,下面這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目中打包優(yōu)化的四種方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • vue.js 輸入框輸入值自動過濾特殊字符替換中問標(biāo)點(diǎn)操作

    vue.js 輸入框輸入值自動過濾特殊字符替換中問標(biāo)點(diǎn)操作

    這篇文章主要介紹了vue.js 輸入框輸入值自動過濾特殊字符替換中問標(biāo)點(diǎn)操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • vue處理emoji表情占位符的操作方法

    vue處理emoji表情占位符的操作方法

    在計(jì)算字符數(shù)時,一般情況下,英文字符、數(shù)字和大部分符號都可以被視為占一個字符長度,因?yàn)樗鼈兪菃蝹€字節(jié),然而,對于某些特殊字符,如表情符號和部分非英文字符,會被認(rèn)為占據(jù)了多個字符長度,本文給介紹了vue處理emoji表情占位符的操作方法,需要的朋友可以參考下
    2024-06-06
  • Vue 購物車案例練習(xí)

    Vue 購物車案例練習(xí)

    這篇文章主要給大家分享關(guān)于Vue 購物車案例的小練習(xí),文章個悲劇購物車為標(biāo)題需求利用HTML代碼實(shí)現(xiàn)整個過程,需要的朋友可以參考一下文章的具體內(nèi)容
    2021-10-10
  • vue實(shí)現(xiàn)簡單無縫滾動效果

    vue實(shí)現(xiàn)簡單無縫滾動效果

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)簡單無縫滾動效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04

最新評論

板桥市| 额尔古纳市| 铁岭市| 肇源县| 习水县| 浙江省| 虞城县| 清新县| 宁远县| 鄢陵县| 静海县| 康马县| 镇平县| 右玉县| 大同市| 北流市| 法库县| 溆浦县| 大连市| 永定县| 湘潭县| 武川县| 临沂市| 宁德市| 永嘉县| 苍梧县| 沾益县| 九台市| 临泉县| 农安县| 广西| 灵川县| 资中县| 项城市| 明光市| 乡宁县| 荔浦县| 繁峙县| 习水县| 太保市| 卢湾区|