天天看點

transition第一次不執行動畫_Vue之生命周期,resource,動畫

transition第一次不執行動畫_Vue之生命周期,resource,動畫

這章節講講Vue的生命周期,resource和動畫部分,其中生命周期還是比較重要的。 1.生命周期:這玩意也可叫 鈎子函數,(為什麼叫鈎子,母雞啊)反正他們是每個 Vue 執行個體在被建立時都要經過一系列的初始化過程——例如,需要設定資料監聽、編譯模闆、将執行個體挂載到 DOM 并在資料變化時更新 DOM 等。一共有8個鈎子函數:

  • beforeCreate:

在執行個體初始化之後,資料觀測(data observer) 和 event/watcher 事件配置之前被調用。

  • created:

執行個體已經建立完成之後被調用。在這一步,執行個體已完成以下的配置:資料觀測(data observer),屬性和方法的運算, watch/event 事件回調。然而,挂載階段還沒開始,$el 屬性目前不可見。

  • beforeMount:

在挂載開始之前被調用:相關的 render 函數首次被調用。

  • mounted:

el 被新建立的 vm.$el 替換,并挂載到執行個體上去之後調用該鈎子。如果 root 執行個體挂載了一個文檔内元素,當 mounted 被調用時 vm.$el 也在文檔内。

  • beforeUpdate:

資料更新時調用,發生在虛拟 DOM 重新渲染和打更新檔之前。你可以在這個鈎子中進一步地更改狀态,這不會觸發附加的重渲染過程。

  • updated:

由于資料更改導緻的虛拟 DOM 重新渲染和打更新檔,在這之後會調用該鈎子。當這個鈎子被調用時,元件 DOM 已經更新,是以你現在可以執行依賴于 DOM 的操作。然而在大多數情況下,你應該避免在此期間更改狀态,因為這可能會導緻更新無限循環。該鈎子在伺服器端渲染期間不被調用。

  • beforeDestroy:

執行個體銷毀之前調用。在這一步,執行個體仍然完全可用。

  • destroyed:

Vue 執行個體銷毀後調用。調用後,Vue 執行個體訓示的所有東西都會解綁定,所有的事件監聽器會被移除,所有的子執行個體也會被銷毀。該鈎子在伺服器端渲染期間不被調用。下面以created舉個例子:

new Vue({  data: {    a: 1  },  created: function () {    // `this` 指向 vm 執行個體    console.log('a is: ' + this.a)  }})// => "a is: 1"
           

以上created中,data和methods就已經可以被調用了

transition第一次不執行動畫_Vue之生命周期,resource,動畫

。 2.v-resource:以前我們請求的資料的習慣了用jquery的$.ajax(),但是jquery本質上是操作dom元素的,是以與vue設計思想不得勁,也不可能傻不愣登的叫你用原生的script标簽去引入,是以就誕生了 v-resource,這個是體積較小的插件,可以用NPM去下載下傳,也可以通過src引入,不過要在vue之後。以get的API為例:

this.$http.get('/someUrl', [options]).then(function(response){    // 響應成功回調}, function(response){    // 響應錯誤回調});
           
  • get(url, [options])
  • head(url, [options])
  • delete(url, [options])
  • jsonp(url, [options])
  • post(url, [body], [options])
  • put(url, [body], [options])
  • patch(url, [body], [options])

以上是它提供的7種請求API。 3.動畫:這個可以當做了解,因為在實際的項目當中,功能實作完了也就完事,但動畫卻可以起到畫龍點睛的作用。下面介紹簡單的動畫用法:基本上要用到動畫的标簽都是用 transition來封裝的,如果是用來v-for的話,需要用 transitio n-group的來封裝。

<div id="demo">  <button v-on:click="show = !show">    Toggle  button>  <transition name="fade">    <p v-if="show">hellop>  transition>div>
           
new Vue({  el: '#demo',  data: {    show: true  }})
           
.fade-enter-active, .fade-leave-active {  transition: opacity .5s;}.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {  opacity: 0;}
           

以上是較為簡單動畫,一般是成雙成對的,淡入淡出,有時候你的動畫隻需要淡入怎麼辦,那麼第二種方案也可以解決。 可以在 attribute 中聲明 JavaScript 鈎子:

<transition  v-on:before-enter="beforeEnter"  v-on:enter="enter"  v-on:after-enter="afterEnter"  v-on:enter-cancelled="enterCancelled"  v-on:before-leave="beforeLeave"  v-on:leave="leave"  v-on:after-leave="afterLeave"  v-on:leave-cancelled="leaveCancelled">  transition>
           
// ...methods: {  // --------  // 進入中  // --------  beforeEnter: function (el) {    // ...  },  // 當與 CSS 結合使用時  // 回調函數 done 是可選的  enter: function (el, done) {    // ...    done()  },  afterEnter: function (el) {    // ...  },  enterCancelled: function (el) {    // ...  },  // --------  // 離開時  // --------  beforeLeave: function (el) {    // ...  },  // 當與 CSS 結合使用時  // 回調函數 done 是可選的  leave: function (el, done) {    // ...    done()  },  afterLeave: function (el) {    // ...  },  // leaveCancelled 隻用于 v-show 中  leaveCancelled: function (el) {    // ...  }}
           

如果你需要在某個時間段執行動畫效果,就在哪個鈎子函數裡面設計相應的動畫。