成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

關(guān)于Vue中的計(jì)算屬性和監(jiān)聽屬性詳解

瀏覽:193日期:2022-06-09 14:52:53
目錄
  • 一、computed計(jì)算屬性
    • (1)計(jì)算屬性的緩存
    • (2)計(jì)算屬性的setter
  • 二、watch監(jiān)聽屬性

    一、computed計(jì)算屬性

    Vue.js模板內(nèi)的表達(dá)式非常便利,但是設(shè)計(jì)它們的初衷是用于簡(jiǎn)單運(yùn)算的,在模板內(nèi)放入過長(zhǎng)的或復(fù)雜的邏輯時(shí),會(huì)讓模板過重且難以維護(hù)。Vue.js框架提倡使用計(jì)算屬性,在一個(gè)計(jì)算屬性可以完成各種復(fù)雜的邏輯,包括邏輯運(yùn)算、函數(shù)調(diào)用等,只要最終返回一個(gè)結(jié)果就可以。在Vue.js框架中,所有計(jì)算屬性都以函數(shù)的形式寫在Vue實(shí)例的computed選項(xiàng)內(nèi),最終返回計(jì)算后的結(jié)果。

    計(jì)算屬性使用示例:

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Document</title>    <script src="../../vue-2.7.14.js"></script></head><body>    <div id="root"><p>原字符串:{{msg}}</p><p>反轉(zhuǎn)字符串:{{reverseMsg}}</p>    </div>    <script>var vm = new Vue({    el: "#root",    data: {msg: "Hello,computed!",    },    computed: {//計(jì)算屬性的getter函數(shù)reverseMsg: function () {    return this.msg.split("").reverse().join("");}    }})    </script></body></html>

    執(zhí)行結(jié)果:

    開發(fā)人員可以在模板中像綁定普通屬性一樣綁定計(jì)算屬性,計(jì)算屬性自動(dòng)監(jiān)聽依賴值的變化,當(dāng)其依賴屬性的值發(fā)生變化時(shí),計(jì)算屬性的值會(huì)自動(dòng)更新,與之相關(guān)的DOM部分也會(huì)同步更新。

    (1)計(jì)算屬性的緩存

    從Vue.js 0.12.11版本開始,默認(rèn)提供了緩存開關(guān),可以在計(jì)算屬性對(duì)象中指定cache字段來控制釋放開啟緩存,代碼如下:

        computed: {//關(guān)閉緩存,默認(rèn)為truecache:true,//計(jì)算屬性的getter函數(shù)reverseMsg: function () {    return this.msg.split("").reverse().join("");}    }

    上述代碼中,設(shè)置cache為false關(guān)閉緩存之后,每次訪問計(jì)算屬性reverseMsg時(shí)都會(huì)重新執(zhí)行g(shù)etter方法

    (2)計(jì)算屬性的setter

    每個(gè)計(jì)算屬性都包含一個(gè)getter和setter,上面的例子都是計(jì)算屬性默認(rèn)用法,只是利用了getter來讀取,在開發(fā)人員需要時(shí),也可以提供一個(gè)setter函數(shù),手動(dòng)修改計(jì)算屬性就像修改一個(gè)普通屬性那樣,就會(huì)觸發(fā)setter函數(shù),執(zhí)行一些自定義的操作。

    計(jì)算屬性setter示例

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Document</title>    <script src="../../vue-2.7.14.js"></script></head><body>    <div id="root">姓名:{{fullName}}    </div>    <script>const vm = new Vue({    el: "#root",    data: {firstName: "Emily",lastName: "Ford"    },    computed: {fullName: {    get: function () {return this.firstName + " " + this.lastName;    },    set: function () {var name = newValue.split("");this.firstName = names[0];this.lastName = names[1];    }}    }})    </script></body></html>

    執(zhí)行結(jié)果:

    絕大多數(shù)情況下,只會(huì)使用默認(rèn)的getter函數(shù)來讀取一個(gè)計(jì)算屬性,在業(yè)務(wù)中很少使用到setter,所以在聲明一個(gè)計(jì)算屬性的時(shí)候,可以直接使用默認(rèn)的寫法,不必將getter和setter都聲明。

    二、watch監(jiān)聽屬性

    Vue.js中的事件處理方法可以根據(jù)用戶的需要自定義,能通過單擊事件、焦點(diǎn)事件、鼠標(biāo)事件等觸發(fā)條件來觸發(fā),但是不能自動(dòng)監(jiān)聽當(dāng)前Vue實(shí)例對(duì)象的狀態(tài)變化。為了解決上述問題,Vue.js提供了watch狀態(tài)監(jiān)聽功能,只要監(jiān)聽到當(dāng)前Vue實(shí)例中的數(shù)據(jù)變化,就會(huì)調(diào)用當(dāng)前數(shù)據(jù)所綁定的事件處理方法。

    wathch監(jiān)聽屬性的示例:

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Document</title>    <script src="../../vue-2.7.14.js"></script></head><body>    <div id="root">千米:<input type="text" v-model="kilometers">米:<input type="text" v-model="meters"><p id="info"></p>    </div>    <script>const vm = new Vue({    el: "#root",    data: {kilometers: 0,meters: 0,    },    watch: {//監(jiān)聽kilometers數(shù)據(jù)kilometers: function (val) {    this.kilometers = val;    this.meters = this.kilometers * 1000;},//監(jiān)聽meters數(shù)據(jù)meters: function (val) {    this.meters = val;    this.kilometers = val / 1000;}    }});//$watch是Vue.js的API提供的一個(gè)方法,用來監(jiān)聽變量的數(shù)據(jù)變化vm.$watch("kilometers", function (newVal, oldVal) {    document.getElementById("info").innerHTML = "修改前:" + oldVal + ", 修改后:" + newVal;})    </script></body></html>

    執(zhí)行結(jié)果:

    上述代碼中,通過data數(shù)據(jù)選項(xiàng)定義了kilometers和meters數(shù)據(jù),并使用v-model進(jìn)行雙向數(shù)據(jù)綁定,通過watch選項(xiàng)定義了監(jiān)聽器,監(jiān)聽當(dāng)前Vue實(shí)例中kilometerhe和meters數(shù)據(jù)的變化

    雖然大多數(shù)情況計(jì)算屬性都可以滿足需要,但有時(shí)還是需要使用監(jiān)聽屬性。當(dāng)需要在數(shù)據(jù)發(fā)生變化時(shí)執(zhí)行異步操作或開銷較大的操作時(shí),就需要使用監(jiān)聽屬性

    computed與watch有什么區(qū)別?

    (1)computed:監(jiān)測(cè)的是依賴值,在依賴值不變的情況下其會(huì)讀取緩存進(jìn)行復(fù)用,在變化的情況下才會(huì)重新計(jì)算;computed是同步的;computed中的函數(shù)都是帶返回值的。

    (2)watch:監(jiān)測(cè)的是屬性值,只要屬性值發(fā)生變化,其都會(huì)觸發(fā)執(zhí)行回調(diào)函數(shù)來執(zhí)行一系列操作;watch可以實(shí)現(xiàn)異步;watch里面的函數(shù)可以不寫返回值

    簡(jiǎn)單來說,computed能做的,watch都能做,反之則不行。

    到此這篇關(guān)于關(guān)于Vue中的計(jì)算屬性和監(jiān)聽屬性詳解的文章就介紹到這了,更多相關(guān)Vue的計(jì)算屬性和監(jiān)聽屬性內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

    標(biāo)簽: JavaScript
    相關(guān)文章:
    成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
    欧美不卡一区二区| 五月天激情综合网| 天天综合网 天天综合色| 亚洲精品美女| 成人免费一区二区三区视频 | 久久久亚洲精华液精华液精华液| 狠狠色伊人亚洲综合成人| 欧美视频一区二区三区四区| 日本欧美肥老太交大片| 欧美性受xxxx黑人xyx| 亚洲午夜羞羞片| 在线视频免费在线观看一区二区| 一区二区中文视频| 1024成人| 一级中文字幕一区二区| 国产精品一区亚洲| 亚洲观看高清完整版在线观看| 亚洲日本免费| 一区二区三区日韩欧美| 一区二区三区免费看| 洋洋av久久久久久久一区| 影音先锋久久精品| 亚洲精品视频免费观看| 在线视频精品| 亚洲成a人v欧美综合天堂下载 | 国产福利一区二区三区视频在线| 欧美人妇做爰xxxⅹ性高电影| 精品一区二区三区免费观看| 555www色欧美视频| 成人免费视频caoporn| 精品国产污网站| 91视频一区二区三区| 国产精品免费网站在线观看| 亚洲精品1区| 亚洲国产欧美日韩另类综合| 久久精品盗摄| 九色|91porny| 精品日韩一区二区三区免费视频| 成人av网在线| 国产精品卡一卡二| 国产精品视频| 久久99精品国产麻豆不卡| 91麻豆精品国产91久久久久| 91日韩在线专区| 国产精品久久久久桃色tv| 1024日韩| 免费欧美日韩国产三级电影| 欧美一区二区三区在线观看| jiyouzz国产精品久久| 国产精品成人在线观看| 中日韩在线视频| 日本免费在线视频不卡一不卡二| 欧美精品v国产精品v日韩精品| 99re热这里只有精品视频| 中文字幕永久在线不卡| 国产精品日韩欧美一区二区| 久久99热99| 久久新电视剧免费观看| 影音先锋亚洲电影| 日韩精品电影一区亚洲| 日韩欧美一级精品久久| 欧美午夜精品| 午夜精彩视频在线观看不卡| 91精品久久久久久蜜臀| 欧美女激情福利| 一区二区三区欧美在线观看| 精品视频在线视频| 色综合天天做天天爱| 亚洲午夜三级在线| 日韩亚洲欧美高清| 亚洲精华国产欧美| 精品一区二区免费在线观看| 欧美国产日韩亚洲一区| 一本一道久久a久久精品综合蜜臀| 国产91在线观看丝袜| 亚洲欧美日韩国产另类专区| 欧美三级日韩三级国产三级| 欧美日韩在线一二三| 五月婷婷久久综合| 日韩欧美不卡一区| 亚洲高清网站| 久久精品国产精品亚洲红杏| 国产色产综合产在线视频| 色综合久久天天| 99久久精品免费| 午夜久久久影院| www久久精品| 久久一区国产| 91免费视频网| 蜜臂av日日欢夜夜爽一区| 久久精品视频在线看| 91国偷自产一区二区开放时间| 色综合亚洲欧洲| 免费欧美日韩国产三级电影| 国产精品你懂的| 欧美三区在线观看| 极品日韩久久| 国产精品综合一区二区三区| 伊人色综合久久天天人手人婷| 在线播放欧美女士性生活| 亚洲欧洲一级| 国产mv日韩mv欧美| 性感美女久久精品| 国产日产欧美一区二区三区| 久热这里只精品99re8久| 97aⅴ精品视频一二三区| 蜜臀av性久久久久av蜜臀妖精 | 欧美激情综合色综合啪啪| 婷婷六月综合亚洲| 国产精品美女久久久久av爽李琼| 91超碰这里只有精品国产| 国产日韩一区二区| 91色九色蝌蚪| 国产一区二区三区高清播放| 亚洲一区二区视频在线观看| 国产亚洲欧美在线| 欧美日韩中文另类| 在线亚洲成人| 91色视频在线| 国产精品白丝av| 日韩精品91亚洲二区在线观看| 国产精品毛片无遮挡高清| 91精品国产综合久久精品| 久久精品一区| 亚洲国产午夜| 欧美不卡在线| 国产91露脸合集magnet| 日韩成人精品视频| 夜夜精品浪潮av一区二区三区| 国产欧美一区二区精品忘忧草| 欧美精品免费视频| 日本丶国产丶欧美色综合| 日韩午夜电影| 欧美日本中文| 夫妻av一区二区| 美女诱惑一区二区| 亚洲一卡二卡三卡四卡| 欧美国产日本韩| 久久综合久色欧美综合狠狠| 91精品国产综合久久久蜜臀图片| 久久综合九九| 亚洲视频导航| 精品动漫3d一区二区三区免费版| www.欧美精品一二区| 国产成人精品一区二| 精品一区二区在线看| 日韩二区三区四区| 亚洲一区二区av在线| **网站欧美大片在线观看| 国产午夜精品一区二区三区视频| 日韩视频一区在线观看| 欧美日韩免费电影| 久久国产88| 国产一级精品aaaaa看| 人妖欧美一区二区| 五月婷婷综合激情| 天天综合天天做天天综合| 亚洲成av人片在线观看| 一区二区三区在线影院| 国产欧美在线| 一级日韩一区在线观看| 亚洲福利一区| 91久久综合| 在线观看不卡| 久久精品人人做人人爽97| 国产亚洲成aⅴ人片在线观看| 精品国产污污免费网站入口 | 亚洲综合在线电影| 亚洲激情图片qvod| 一区二区三区在线视频观看| 亚洲免费在线看| 一区二区三区四区蜜桃| 亚洲久本草在线中文字幕| 日韩伦理av电影| 亚洲精品自拍动漫在线| 18涩涩午夜精品.www| 国产精品久久久久天堂| 国产精品第五页| 国产精品一区免费观看| 国内精品久久久久影院薰衣草 | 国产日产欧产精品推荐色 | 久久国产精品露脸对白| 久久99国产精品久久99果冻传媒| 日韩高清中文字幕一区| 蜜臀精品久久久久久蜜臀| 九九热在线视频观看这里只有精品| 久久99精品久久久久久| 国产在线精品视频| 国产激情一区二区三区四区| 丰满亚洲少妇av| kk眼镜猥琐国模调教系列一区二区| av男人天堂一区| 欧美精品18| 亚洲午夜91| 在线综合欧美| 日本精品裸体写真集在线观看| 欧美性感一类影片在线播放| 91精品国产aⅴ一区二区| 日韩女优制服丝袜电影| 久久美女艺术照精彩视频福利播放|