使用vue已經有一段時間了,在這裡先說一些自己感覺有必要鞏固一下知識查漏補,所以總結的一些vue知識點,vue官網的文件已經非常清楚了,如果有什麼不明白的或錯誤的歡迎大佬們給我留言。
1.vue生命週期
學習和使用vue就離不開vue生命週期,每個 Vue 例項在被建立時都要經過一系列的初始化過程,而生命週期就是在這個過程中執行的一些方法。
下圖是vue生命週期示意圖,在這張圖中我們可以看到在vue的生命週期中的一些方法:
當new一個例項的時候vue就會按照這個生命週期進行渲染。
1.1 beforeCreate
beforeCreate (建立前) ---在例項初始化之後,資料觀測 (data observer) 和 event/watcher 事件配置之前被呼叫。
在這個生命週期中可以設定loading動畫或者根據路由資訊進行重定向,使用最多的一個操作就是在獲取路由資訊然後結合Vuex把這些資訊儲存在store中,如果有其他的可以在留言區交流。
(Tips:該程式碼結合了nuxt.js、vuex的一些方法。)
1.2 created
created (建立後) --- 在例項建立完成後被立即呼叫。在這一步,例項已完成以下的配置:資料觀測 (data observer),屬性和方法的運算,watch/event 事件回撥。然而,掛載階段還沒開始,$el
屬性目前不可見。
在此生命週期中this.$data
可以訪問,能夠直接呼叫methods
定義的方法,watcher、events
也可以執行;
1.3 beforeMount
beforeMount (載入前)在掛載開始之前被呼叫:相關的 render
函式首次被呼叫。
該鉤子在伺服器端渲染期間不被呼叫。
1.4 mounted
mounted (載入後)el
被新建立的 vm.$el
替換,並掛載到例項上去之後呼叫該鉤子。如果 root 例項掛載了一個文件內元素,當 mounted
被呼叫時 vm.$el
也在文件內。
注意 mounted
不會承諾所有的子元件也都一起被掛載。如果你希望等到整個檢視都渲染完畢,可以用 vm.$nextTick 替換掉 mounted
:
mounted: function () {
this.$nextTick(function () {
// Code that will run only after the
// entire view has been rendered
})
}複製程式碼
該鉤子在伺服器端渲染期間不被呼叫。
1.5 beforeUpdate
beforeUpdate (更新前)資料更新時呼叫,發生在虛擬 DOM 打補丁之前。這裡適合在更新之前訪問現有的 DOM,比如手動移除已新增的事件監聽器。
該鉤子在伺服器端渲染期間不被呼叫,因為只有初次渲染會在服務端進行。
1.6 updated
由於資料更改導致的虛擬 DOM 重新渲染和打補丁,在這之後會呼叫該鉤子。
當這個鉤子被呼叫時,元件 DOM 已經更新,所以你現在可以執行依賴於 DOM 的操作。然而在大多數情況下,你應該避免在此期間更改狀態。如果要相應狀態改變,通常最好使用計算屬性或 watcher 取而代之。
注意 updated
不會承諾所有的子元件也都一起被重繪。如果你希望等到整個檢視都重繪完畢,可以用 vm.$nextTick 替換掉 updated
:
updated: function () {
this.$nextTick(function () {
// Code that will run only after the
// entire view has been re-rendered
})
}複製程式碼
該鉤子在伺服器端渲染期間不被呼叫。
1.7 beforeDestroy
beforeDestroy (銷燬前)例項銷燬之前呼叫。在這一步,例項仍然完全可用。
該鉤子在伺服器端渲染期間不被呼叫。
1.8 destroyed
destroyed (銷燬後)Vue 例項銷燬後呼叫。呼叫後,Vue 例項指示的所有東西都會解繫結,所有的事件監聽器會被移除,所有的子例項也會被銷燬。
該鉤子在伺服器端渲染期間不被呼叫。
2.Vue元件間的引數傳遞
2.1父子元件傳值
父元件給子元件傳值:子元件通過props方法接受資料;
子元件給父元件傳值:$emit方法傳遞引數;
2.1非父子元件傳值
使用vuex,vuex是一個專為 Vue.js 應用程式開發的狀態管理模式。它採用集中式儲存管理應用的所有元件的狀態,並以相應的規則保證狀態以一種可預測的方式發生變化。後續會新增一些vuex的使用方法。