日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)VUE3教程:Vue3.0自定義指令

#概覽

下面是對變更的簡要總結(jié):

  • API 已重命名,以便更好地與組件生命周期保持一致
  • 自定義指令將由子組件通過 v-bind="$attrs"

更多信息,請繼續(xù)閱讀!

#2.x 語法

在 Vue 2,自定義指令是通過使用下面列出的鉤子來創(chuàng)建的,這些鉤子都是可選的

  • bind- 指令綁定到元素后發(fā)生。只發(fā)生一次。
  • inserted- 元素插入父 DOM 后發(fā)生。
  • update- 當元素更新,但子元素尚未更新時,將調(diào)用此鉤子。
  • componentUpdated- 一旦組件和子級被更新,就會調(diào)用這個鉤子。
  • unbind- 一旦指令被移除,就會調(diào)用這個鉤子。也只調(diào)用一次。

下面是一個例子:

高亮顯示此文本亮黃色

Vue.directive('highlight', {
  bind(el, binding, vnode) {
    el.style.background = binding.value
  }
})

在這里,在這個元素的初始設(shè)置中,指令通過傳遞一個值來綁定樣式,該值可以通過應(yīng)用程序更新為不同的值。

#3.x 語法

然而,在 Vue 3 中,我們?yōu)樽远x指令創(chuàng)建了一個更具凝聚力的 API。正如你所看到的,它們與我們的組件生命周期方法有很大的不同,即使我們正與類似的事件鉤子,我們現(xiàn)在把它們統(tǒng)一起來了:

  • bind →beforeMount
  • inserted →mounted
  • beforeUpdate:新的!這是在元素本身更新之前調(diào)用的,很像組件生命周期鉤子。
  • update → 移除!有太多的相似之處要更新,所以這是多余的,請改用 updated
  • componentUpdated →updated
  • beforeUnmount:新的!與組件生命周期鉤子類似,它將在卸載元素之前調(diào)用。
  • unbind ->unmounted

最終 API 如下:

const MyDirective = {
  beforeMount(el, binding, vnode, prevVnode) {},
  mounted() {},
  beforeUpdate() {},
  updated() {},
  beforeUnmount() {}, // 新
  unmounted() {}
}

生成的 API 可以這樣使用,與前面的示例相同:

高亮顯示此文本亮黃色

const app = Vue.createApp({})


app.directive('highlight', {
  beforeMount(el, binding, vnode) {
    el.style.background = binding.value
  }
})

既然定制指令生命周期鉤子映射了組件本身的那些,那么它們就更容易推理和記住了!

#邊界情況:訪問組件實例

通常建議保持指令獨立于它們所使用的組件實例。從自定義指令中訪問實例通常表明該指令本身應(yīng)該是一個組件。然而,在某些情況下,這實際上是有意義的。

在Vue 2中,必須通過vnode參數(shù)訪問組件實例:

bind(el, binding, vnode) {
  const vm = vnode.context
}

在Vue 3中,實例現(xiàn)在是bind的一部分:

mounted(el, binding, vnode) {
  const vm = binding.instance
}

#實施細節(jié)

在 Vue 3 中,我們現(xiàn)在支持片段,這允許我們?yōu)槊總€組件返回多個 DOM 節(jié)點。你可以想象,對于具有多個

  • 的組件或一個表的子元素這樣的組件有多方便:

    如此靈活,我們可能會遇到一個定制指令的問題,它可能有多個根節(jié)點。

    因此,自定義指令現(xiàn)在作為虛擬 DOM 節(jié)點數(shù)據(jù)的一部分包含在內(nèi)。當在組件上使用自定義指令時,鉤子作為無關(guān)的 prop 傳遞到組件,并以 this.$attrs 結(jié)束。

    這也意味著可以像這樣在模板中直接掛接到元素的生命周期中,這在涉及到自定義指令時非常方便:

    這與屬性 fallthrough 行為是一致的,因此,當子組件在內(nèi)部元素上使用 v-bind="$attrs" 時,它也將應(yīng)用對其使用的任何自定義指令。


    網(wǎng)站題目:創(chuàng)新互聯(lián)VUE3教程:Vue3.0自定義指令
    URL鏈接:http://m.5511xx.com/article/coogipi.html