iT邦幫忙

2023 iThome 鐵人賽

DAY 15
0
Vue.js

重新認識 Vue.js系列 第 15

重新認識 Vue.js Day15: 額外函式

  • 分享至 

  • xImage
  •  

在 Vue 中,除了一般的 javescript 語法外,還有其他一些輔助用的函式,就讓我們來看看吧

  1. $set
    官方說法:
    對於已經創建的實例,Vue 不允許動態添加根級別的響應式 property。但是,可以使用 Vue.set(object, propertyName, value) 方法向嵌套對象添加響應式 property
    白話點就是,在 Vue 中預設不會追蹤物件裡面的鑲套屬性變化,但若是使用 $set 語法就可以將響應式物件加入到物件內層裡面

  2. $forceUpdate
    與 $set 大同小異,當我們今天做出了一個 Vue 響應式模板沒有辦法追蹤到的行為,可以直接使用 $forceUpdate 來將視圖直接重新刷新一遍

  3. $mixin
    在 Vue 中,mixin 的用法與直接 use 一個套件類似,都是直接影響到 Vue 實體的本身,我們來看一段官方的用法

var mixin = {
  data: function () {
    return {
      message: 'hello',
      foo: 'abc'
    }
  }
}

new Vue({
  mixins: [mixin],
  data: function () {
    return {
      message: 'goodbye',
      bar: 'def'
    }
  },
  created: function () {
    console.log(this.$data)
    // => { message: "goodbye", foo: "abc", bar: "def" }
  }
})

由於使用 mixin 會看到有很多沒有在清楚的定邦定義的代碼,因此還是建議若要使用留個文件之類的造福他人

  1. $extend
    在 Vue2 中,extend 語法類似於生成一個基礎的 component 元件後,允許在其他元件中透過 extend 來引用近來基礎模板設定,並且可以再額外客製化自己喜歡的內容,但由於此函式在 Vue3 中被移除,這邊就不再贅述了

  2. $nextTick
    在 Vue 中,在生命週期的 updated 時,已經將所有的數值重新綁定一輪了,但是我們若需要在視圖更新好後才觸發觸發某些代碼,類似 promise 的感覺我們可以使用 $nextTick 來確保此時畫面的 DOM 是已經更新完畢的

  3. $directive
    在 Vue 中,也允許我們自定義一些需要用的方法譬如官方的這段代碼

// 注册一个全局自定义指令 `v-focus`
Vue.directive('focus', {
  // 当被绑定的元素插入到 DOM 中时……
  inserted: function (el) {
    // 聚焦元素
    el.focus()
  }
})

在其中,也有一些鉤子韓式可以設定

  • bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。

  • inserted:被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)。

  • update:所在组件的 VNode 更新时调用,但是可能发生在其子 VNode 更新之前。指令的值可能发生了改变,也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新 (详细的钩子函数参数见下)。

今天的內容到此結束~


上一篇
重新認識 Vue.js Day14: 常用套件
下一篇
重新認識 Vue.js Day16: keep alive
系列文
重新認識 Vue.js30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言