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