成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

20190604-Vue的生命周期

OpenDigg / 974人閱讀

摘要:銷毀前組件實(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

相關(guān)文章

  • Maven 生命周期

    摘要:生命周期生命周期是為了對(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è)試、打包、集成...

    CoreDump 評(píng)論0 收藏0
  • vue生命周期

    摘要:接觸兩個(gè)月了,今天說(shuō)一說(shuō)里邊很重要的生命周期,記得最開(kāi)始接觸的時(shí)候我問(wèn)了一下周邊的同事,這些生命周期都有什么用,得到的答案是里邊可以操作屬性,你記住就完事了,于是乎。。。 接觸Vue兩個(gè)月了,今天說(shuō)一說(shuō)vue里邊很重要的生命周期,記得最開(kāi)始接觸的時(shí)候我問(wèn)了一下周邊的同事,這些生命周期都有什么用,得到的答案是mounted里邊可以操作屬性,你記住mounted就完事了,于是乎。。。 數(shù)據(jù)...

    godlong_X 評(píng)論0 收藏0
  • 生命周期感知組件處理生命周期

    摘要:生命周期感知組件會(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 和...

    acrazing 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<