国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

vue學(xué)習(xí)筆記(二)

Pines_Cheng / 1832人閱讀

摘要:供用戶在相應(yīng)的階段對其進(jìn)行操作。我們像下面這樣使用這個指令大多數(shù)情況下,我們只需要使用與鉤子函數(shù)。里提供了函數(shù)的簡寫形式鉤子函數(shù)有兩個常用的參數(shù)和。其他用法與全局自定義指令一致。

一、vue生命周期

vue實(shí)例從創(chuàng)建到銷毀的過程,稱為生命周期,共有八個階段。

這八個階段里分別有一個叫做鉤子函數(shù)的實(shí)例選項(xiàng)。供用戶在相應(yīng)的階段對其進(jìn)行操作。

beforeCreate(){  //組件實(shí)例剛剛創(chuàng)建,還未進(jìn)行數(shù)據(jù)觀測和事件配置
                
},
created(){  //實(shí)例已經(jīng)創(chuàng)建完成,并且已經(jīng)進(jìn)行數(shù)據(jù)觀測和事件配置
                
},
beforeMount(){//模板編譯之前,還沒掛載
                
},
mounted(){ //模板編譯之后,已經(jīng)掛載,此時才會渲染頁面,才能看到頁面上數(shù)據(jù)的展示
                    
},
beforeUpdate(){//組件更新之前
                
},
updated(){//組件更新之后
                
},
beforeDestroy(){//組件銷毀之前
                
},
destroyed(){  //組件銷毀之后
                    
}

這幾個鉤子中,最常用的是created()mounted()

二、計算屬性

計算屬性也是用來存儲數(shù)據(jù),但具有以下幾個特點(diǎn):

數(shù)據(jù)可以進(jìn)行邏輯處理操作

對計算屬性中的數(shù)據(jù)進(jìn)行監(jiān)視

1、基本用法
{{addZero}}
new Vue({ el: "#app", data: { num: 8 }, computed: { //這是計算屬性的get方法,用于取值 addZero() { return this.num > 10 ? this.num : "0" + this.num; } } })

這里的addZeronum一樣,都是屬性。不過addZero是依賴于num、進(jìn)行計算后的值。一旦num的值發(fā)生變化,addZero的值也會隨之變化。

 
{{num}}----{{addZero}}
new Vue({ el: "#app", data: { num: 8 }, methods: { change: () => { this.num++; } }, computed: { addZero:() => { return this.num > 10 ? this.num : "0" + this.num; } } })

一旦我們點(diǎn)擊按鈕改變num的值,那么因?yàn)橛嬎銓傩詫?shí)時監(jiān)測依賴項(xiàng),addZero也會跟著發(fā)生變化。

2、計算屬性 vs 方法

將計算屬性的get函數(shù)定義為一個方法也可以實(shí)現(xiàn)和計算屬性類似的功能。那么二者之間有什么區(qū)別?

區(qū)別一:計算屬性是基于它的依賴進(jìn)行實(shí)時更新的,方法則是調(diào)用才更新

區(qū)別二:計算屬性是有緩存的,只要相關(guān)依賴沒有改變,多次訪問計算屬性得到的值是之前緩存的計算結(jié)果,不會多次執(zhí)行。操作一個沒有依賴項(xiàng)的值也是如此。

官方文檔給出了下面這個例子:

computed: {
  now: function () {
    return Date.now()
  }
}

計算屬性存在緩存,這里的now值不會發(fā)生變化。

3. get和set

計算屬性由兩部分組成:get和set,分別用來獲取計算屬性和設(shè)置計算屬性。默認(rèn)只有g(shù)et,如果需要set,要自己添加。

        
{{num}}----{{addZero}}
new Vue({ el: "#app", data: { num: 8 }, methods: { change(newNumber) { this.addZero = newNumber; } }, computed: { addZero: { get() { return this.num > 10 ? this.num : "0" + this.num; }, set(newNum) { this.num = newNum } } } })

我們再change方法中改變addZero屬性的值的時候會自動調(diào)用它的set方法。

三、實(shí)例屬性和方法

vue中給實(shí)例和屬性提供了若干屬性和方法。

1、屬性

獲取屬性的語法:實(shí)例名.屬性名
以下是常用的屬性:

vm.$el: 獲取vue實(shí)例關(guān)聯(lián)的元素DOM,進(jìn)而可以對其進(jìn)行操作

vm.$data: 獲取數(shù)據(jù)對象data

vm.$options:獲取選項(xiàng),自定義的選項(xiàng)也可以在這里獲取。

vm.$refs:獲取所有添加ref屬性的元素dom對象,進(jìn)而可以對其進(jìn)行操作

2、方法 vm.$mount()

手動掛載vue實(shí)例

var vm=new Vue({
    data:{
        msg:"Hello vue.js"
    }
 }).$mount("#app");
vm.$destroy()

銷毀實(shí)例

vm.$destroy();  //銷毀實(shí)例所占的內(nèi)存空間
vm.$nextTick(callback)

在DOM更新完成后再執(zhí)行回調(diào)函數(shù),一般在修改數(shù)據(jù)之后使用該方法,以便獲取更新后的DOM

var vm=new Vue({
    data:{
        msg:"Hello vue.js"
    }
 }).$mount("#app");
 
 //修改數(shù)據(jù)
 vm.msg="foo";
 
 console.log(vm.$refs.title.textContent);  //Hello vue.js
 vm.$nextTick(function(){
    console.log(vm.$refs.title.textContent); //foo
 });

DOM還沒更新完,Vue實(shí)現(xiàn)響應(yīng)式并不是數(shù)據(jù)發(fā)生改變之后DOM立即變化,需要按一定的策略進(jìn)行DOM更新,需要時間!使用$nextTick方法等DOM更新完再獲取數(shù)據(jù)。

vm.$set(target,key,value)

通過vue實(shí)例的$set方法為對象添加屬性,可以實(shí)時監(jiān)視。

{{user.name}}
{{user.age}}
var vm = new Vue({ data: { msg: "Hello vue.js", user: { name: "hedawei", gender: "man" } }, methods: { addAge() { /* this.user.age = 22; */ this.$set(this.user, "age", 22); } } }).$mount("#app");

方法中使用原始的添加屬性方法的話不會在模板中顯示。使用$set方法會實(shí)時監(jiān)控數(shù)據(jù),然后添加。

vm.$watch(監(jiān)聽的屬性,callback)

監(jiān)控vue實(shí)例的變化

 vm.$watch("msg", (newValue, oldValue) => {
    console.log("msg被修改啦,原值:" + oldValue + ",新值:" + newValue);
 });

如果需要監(jiān)控深度數(shù)據(jù)變化(例如監(jiān)控一個對象中的某個屬性),則需要在選項(xiàng)中添加{deep:true}

四、自定義指令

自定義指令分為自定義全局指令和自定義局部指令。

1、自定義全局指令

使用全局方法Vue.directive(指令I(lǐng)D,定義對象)。注:使用指令時必須在指名名稱前加前綴v-,即v-指令名稱

簡單示例:

Vue.directive("hello",{
    bind(){ //常用!!
        alert("指令第一次綁定到元素上時調(diào)用,只調(diào)用一次,可執(zhí)行初始化操作");
    },
    inserted(){
        alert("被綁定元素插入到DOM中時調(diào)用");
    },
    update(){
        alert("被綁定元素所在模板更新時調(diào)用");
    },
    componentUpdated(){
        alert("被綁定元素所在模板完成一次更新周期時調(diào)用");
    },
    unbind(){
        alert("指令與元素解綁時調(diào)用,只調(diào)用一次");
    }
 });

這里定義了一個名為hello的指令,指令定義函數(shù)提供了幾個鉤子函數(shù),分別在不同的時期生效。我們像下面這樣使用這個指令:

hello vue.js

大多數(shù)情況下,我們只需要使用bindupdate鉤子函數(shù)。vue里提供了函數(shù)的簡寫形式:

Vue.directive("hello", function () {
    alert("hello vue.js");
})  

鉤子函數(shù)有兩個常用的參數(shù)elbindingel是綁定的DOM對象,binding是一個對象,包含若干屬性。

拿到DOM對象,我們就可以對DOM進(jìn)行一些操作。

hello vue.js

Vue.directive("hello", function (el,binding) { el.style.color = "red"; //屬性name是指令的名字(不帶v-) console.log(binding.name); //hello //屬性value是傳遞給指令的值 console.log(binding.value); //alice //屬性expression是指令值的字符串形式(個人感覺就是類似變量名) console.log(binding.expression); //msg //屬性arg是傳遞給指令的參數(shù)(和傳值寫在一起容易令初學(xué)者困惑,下面分開寫 //合在一起寫的寫法是

hello vue.js

) //

hello vue.js

console.log(binding.arg); //123 //屬性modifiers是一個包含修飾符的對象。 //與傳參傳值合在一起的寫法是

hedawei

//

hello vue.js

console.log(binding.modifiers); //{bar:true} }) var vm = new Vue({ el: "#app", data: { msg: "alice" } })
2、局部自定義指令

局部自定義指令寫在實(shí)例的directives選項(xiàng)中。

  var vm = new Vue({
    el: "#app",
    data: {
        msg: "alice"
    },
    methods: {
    },
    directives: {
        word: function(el, binding) {
            console.log(binding.name);
        }
    }
 })

其他用法與全局自定義指令一致。

五、過度(動畫)

Vue 在插入、更新或者移除 DOM 時,提供多種不同方式的應(yīng)用過渡效果。本質(zhì)上還是使用CSS3動畫:transition、animation屬性。

1、基本用法

使用transition組件,將要執(zhí)行動畫的元素包含在該組件內(nèi):

    
        運(yùn)動的元素
   

我們需要為其定義一個name屬性,以便后面為其添加css樣式。

動畫有6個CSS類名,下面結(jié)合例子說明:


    
    

2、鉤子函數(shù)

vue中給過渡的不同時期提供了不同的鉤子函數(shù)。


        

new Vue({ ... methods: { beforeEnter(el) { alert("動畫進(jìn)入之前"); }, enter(el) { alert("動畫進(jìn)入"); }, afterEnter(el) { alert("動畫進(jìn)入之后"); }, beforeLeave(el) { alert("動畫離開之前"); }, leave(el) { alert("動畫離開"); }, afterLeave(el) { alert("動畫離開之后"); } } });

在這不同的時期,我們可以取到過渡元素的DOM對象,從而對其進(jìn)行操作。

3、多元素過渡

上面的標(biāo)簽只適用于單元素過渡。若要對多元素進(jìn)行過渡,則需要使用標(biāo)簽,并且綁定key屬性,設(shè)置不同的值。

    
    
        

4、結(jié)合第三方庫一起使用(animate.css)

我們可以使用vue的自定義過渡類名結(jié)合第三方動畫庫實(shí)現(xiàn)自定義動畫效果。這六個自定義類名和vue內(nèi)置的類名類似:

enter-class

enter-active-class

enter-to-class

leave-class

leave-active-class

leave-to-class
示例:

 p {
    width: 300px;
    height: 300px;
    background-color: red;
    margin: 0 auto;
 }

 

未完待續(xù)。。。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/89169.html

相關(guān)文章

  • Vue.js學(xué)習(xí)系列 —— vuex學(xué)習(xí)實(shí)踐筆記(附DEMO)

    摘要:有興趣的同學(xué)可以查看之前發(fā)布的文章學(xué)習(xí)系列一學(xué)習(xí)實(shí)踐筆記附學(xué)習(xí)系列二學(xué)習(xí)實(shí)踐筆記附學(xué)習(xí)系列三和網(wǎng)絡(luò)傳輸相關(guān)知識的學(xué)習(xí)實(shí)踐學(xué)習(xí)系列四打包工具的使用學(xué)習(xí)系列五從來聊聊學(xué)習(xí)系列項(xiàng)目地址項(xiàng)目暫時有點(diǎn)亂,之后會進(jìn)行整理優(yōu)化。 上次學(xué)習(xí)了vue-router的使用,讓我能夠在各個頁面間切換,將頁面搭建了起來。這次則要學(xué)習(xí)vue的狀態(tài)管理模式——vuex。它類似于redux來應(yīng)用的全局狀態(tài)。 注:本...

    DobbyKim 評論0 收藏0
  • vue.js學(xué)習(xí)筆記 - 組件(

    摘要:當(dāng)組件給其他人使用時這很有用,因?yàn)檫@些驗(yàn)證要求構(gòu)成了組件的,確保其他人正確地使用組件。有特性的稱為命名。例如,假定我們有一個組件,它的模板為父組件模板渲染結(jié)果為 一、注冊 // 定義 var MyComponent = Vue.extend({ template: A custom component! }); // 注冊 Vue.component(my-component, ...

    Betta 評論0 收藏0
  • vue學(xué)習(xí)筆記

    摘要:供用戶在相應(yīng)的階段對其進(jìn)行操作。我們像下面這樣使用這個指令大多數(shù)情況下,我們只需要使用與鉤子函數(shù)。里提供了函數(shù)的簡寫形式鉤子函數(shù)有兩個常用的參數(shù)和。其他用法與全局自定義指令一致。 一、vue生命周期 vue實(shí)例從創(chuàng)建到銷毀的過程,稱為生命周期,共有八個階段。 這八個階段里分別有一個叫做鉤子函數(shù)的實(shí)例選項(xiàng)。供用戶在相應(yīng)的階段對其進(jìn)行操作。 beforeCreate(){ //組件實(shí)例剛...

    klivitamJ 評論0 收藏0
  • vue學(xué)習(xí)筆記

    摘要:供用戶在相應(yīng)的階段對其進(jìn)行操作。我們像下面這樣使用這個指令大多數(shù)情況下,我們只需要使用與鉤子函數(shù)。里提供了函數(shù)的簡寫形式鉤子函數(shù)有兩個常用的參數(shù)和。其他用法與全局自定義指令一致。 一、vue生命周期 vue實(shí)例從創(chuàng)建到銷毀的過程,稱為生命周期,共有八個階段。 這八個階段里分別有一個叫做鉤子函數(shù)的實(shí)例選項(xiàng)。供用戶在相應(yīng)的階段對其進(jìn)行操作。 beforeCreate(){ //組件實(shí)例剛...

    ideaa 評論0 收藏0
  • vue學(xué)習(xí)筆記(三)

    摘要:直接創(chuàng)建組件使用標(biāo)簽名組件模板,根據(jù)組件構(gòu)造器來創(chuàng)建組件。相應(yīng)的,實(shí)例也被稱為父組件。而且不允許子組件直接修改父組件中的數(shù)據(jù),強(qiáng)制修改會報錯。 一、組件 (一)什么是組件 組件(Component)是 Vue.js最強(qiáng)大的功能之一。組件可以擴(kuò)展 HTML元素,封裝可重用的代碼組件是自定義元素(對象)。 (二)創(chuàng)建組件的兩種方式 官方推薦組件標(biāo)簽名是使用-連接的組合詞,例如:。 1、使用...

    fsmStudy 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<