摘要:銷毀前組件實例銷毀前執(zhí)行的方法。銷毀后組件銷毀后,調用的方法,對的改變不會再觸發(fā)函數(shù)周,實例已經(jīng)解除事件監(jiān)聽和綁定,但結構依然存在。掛在完成后的生命周期鉤子注冊。生產(chǎn)版本設為可以啟用檢查。的全局語法用法在下次更新循環(huán)結束后執(zhí)行延遲回調。
什么是生命周期?
每個Vue實例在被創(chuàng)建時都經(jīng)過了一系列的初始化過程
設置數(shù)據(jù)監(jiān)聽
編譯模板
將實例掛載到DOM
數(shù)據(jù)變化時更新DOM
在這一系列過程中,也會運行一些「生命周期鉤子」的函數(shù),用在給開發(fā)者在不同階段添加自己的代碼的機會。
「created」鉤子,在一個實例被創(chuàng)建后執(zhí)行代碼
new Vue({ data: { a: 1 }, created: function () { // `this` 指向 vm 實例 console.log("a is: " + this.a) } }) // => "a is: 1"
不要在選項屬性或回調上使用箭頭函數(shù),比如 created: () => console.log(this.a) 或 vm.$watch("a", newValue => this.myMethod())。因為箭頭函數(shù)并沒有 this,this 會作為變量一直向上級詞法作用域查找,直至找到為止,經(jīng)常導致 Uncaught TypeError: Cannot read property of undefined 或 Uncaught TypeError: this.myMethod is not a function 之類的錯誤。
參考 Vue實例
通俗的講:就是在.Vue從加載前到銷毀后,這一些系列過程中,有特定的階段fn可以提供我們開發(fā)者來進行操作。
階段鉤子函數(shù)方法 | 觸發(fā)階段 | 操作 |
---|---|---|
beforeCreate | 創(chuàng)建前 | 組件實例剛被創(chuàng)建,組件屬性計算前,數(shù)據(jù)對象data都未定義,未初始化 |
created | 創(chuàng)建后 | 組件實例創(chuàng)建完成,屬性已經(jīng)綁定,數(shù)據(jù)對象data已經(jīng)定義存在,DOM沒為生成,$el未存在 |
beforeMount | 掛載前 | Vue實例的$el和data都已經(jīng)初始化完成,掛在前為虛擬的dom節(jié)點,模板還沒有渲染到HTML頁面上去,data.message未替換。 |
mounted | 掛載后 | Vue實例掛載完成,模板已經(jīng)渲染到HTML中,dota.message成功渲染。這個階段可以做一些ajax請求操作,mounted在周期中只會執(zhí)行一次。 |
beforeUpdate | 更新前 | 當dota更新之前,會觸發(fā)beforeUpdate方法。 |
updated | 更新后 | 當data更新完成后,觸發(fā)updated方法。 |
beforeDestory | 銷毀前 | Vue組件實例銷毀前執(zhí)行的方法。 |
destroyed | 銷毀后 | 組件銷毀后,調用的方法,對data的改變不會再觸發(fā)函數(shù)周,vue實例已經(jīng)解除事件監(jiān)聽和dom綁定,但dom結構依然存在。 |
import Axios from "axios" // 這是一個輕量級的ajax庫,import是es6模塊導入的語法。 export default { // 這是一個vue的模塊,后面講奧。 name: "app", components: { }, data: function () { return { list: [] } }, mounted: function () { // 掛在完成后的生命周期鉤子注冊。 this.$nextTick(function () { // 等待下一次更新完成后執(zhí)行業(yè)務處理代碼。 Axios.get("/api/menulist", {// 將回調延遲到下次 DOM 更新循環(huán)之后執(zhí)行。在修改數(shù)據(jù)之后立即使用它,然后等待 DOM 更新 params: { } }).then(function (res) { this.list = res.data }.bind(this)) }) } }Vue實例的全局配置
silent
類型:boolean
默認值:false
用法:
Vue.config.silent = true // 取消Vue所有的日志與警告
optionMergeStrategies
類型: { [key: string]: Function }
默認值: {}
用法:
Vue.config.optionMergeStrategies._my_option=function( parent,child,vm){ return child+1 } const Profile = Vue.extend({ _my_option: 1 }) Profile.options._my_option = 2 // 自定義合并策略選項 // 合并策略選項分別接受第一個參數(shù)作為父實例,第二個參數(shù)為子實例,Vue實例上下文被作為第三個參數(shù)傳入。
devtools
類型:boolean
默認值:true
用法:
// 務必在加載 Vue 之后,立即同步設置以下內(nèi)容Vue.config.devtools = true // 配置是否允許 vue-devtools 檢查代碼。開發(fā)版本默認為 true,生產(chǎn)版本默認為 false。生產(chǎn)版本設為 true 可以啟用檢查。Vue的全局API
Vue.nextTick
語法:Vue.nextTick([callback, context])
{Function}[callback] {Object}[callback]
用法:
在下次DOM更新循環(huán)結束后執(zhí)行延遲回調。在修改數(shù)據(jù)之后立即使用這個方法,獲取更新后的DOM
// 修改數(shù)據(jù) vm.msg = "msg" // DOM未更新 Vue.nexTick(function() { // DOM更新了 // 執(zhí)行操作 })
Vue.set
語法:Vue.set( object, key, value)
參數(shù):
{Object} object {String} key {any} value
用法:
設置對象數(shù)據(jù)。如果對象是響應式的,確保屬性被創(chuàng)建后也是響應式的,同時觸發(fā)視圖更新,這個方法主要用于避開Vue不能檢測屬性被添加的限制。注意對象不能使Vue示例,或者Vue實例的根數(shù)據(jù)對象。
Vue.complie
語法:Vue.compile(template)
參數(shù):
{string} template
用法:
// 在render函數(shù)中編譯模板字符串 // 在獨立構建時有效 var res = Vue.Compile(`{{ msg }}`) new Vuew({ data:{ msg:"hello" }, render:res.render, staticRenderFns:res.staticRenderFns })
更多的API和用法請看-> API-Vue
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/104408.html
摘要:生命周期生命周期是為了對所有的構建過程進行抽象和統(tǒng)一,開發(fā)了一套高度完善的易擴展的生命周期。生命周期本身不做任何實際的工作,實際的任務都交給插件來完成。生命周期步驟在中,有三套相互獨立的生命周期,分別是和。 Maven 生命周期 Maven 生命周期是為了對所有的構建過程進行抽象和統(tǒng)一,開發(fā)了一套高度完善的、易擴展的生命周期。這個生命周期包含了項目的清理、初始化、編譯、測試、打包、集成...
摘要:生命周期感知組件會執(zhí)行操作來響應另一個組件如和的生命周期狀態(tài)的改變。使用兩個主要枚舉來追蹤其關聯(lián)組件的生命周期狀態(tài)從和類中分發(fā)的生命周期事件,這些事件映射到和的回調事件中。 生命周期感知組件會執(zhí)行操作來響應另一個組件(如 activity 和 fragment)的生命周期狀態(tài)的改變。這些組件可以幫助你生成組織性更好、更輕量級、更易于維護的代碼。 一個常見的模式是在 activity 和...
閱讀 2685·2021-11-18 10:02
閱讀 3416·2021-09-28 09:35
閱讀 2595·2021-09-22 15:12
閱讀 754·2021-09-22 15:08
閱讀 3117·2021-09-07 09:58
閱讀 3476·2021-08-23 09:42
閱讀 737·2019-08-30 12:53
閱讀 2086·2019-08-29 13:51