日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > vue >内容正文

vue

vue修改计算属性的值_Vue语法高级之计算属性和侦听器

發(fā)布時(shí)間:2024/7/23 vue 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue修改计算属性的值_Vue语法高级之计算属性和侦听器 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

????計(jì)算屬性和偵聽(tīng)器都可以監(jiān)聽(tīng)到data區(qū)數(shù)據(jù)的變化,當(dāng)數(shù)據(jù)變化時(shí)可以觸發(fā)方法的調(diào)用,從而在方法內(nèi)部可以進(jìn)行相應(yīng)的邏輯處理。

????計(jì)算屬性的語(yǔ)法格式是:computed: {}

????偵聽(tīng)器的語(yǔ)法格式是:watch: {}

一、計(jì)算屬性

????計(jì)算屬性一般是為了簡(jiǎn)化模板中的內(nèi)容,讓模板中內(nèi)容盡可能簡(jiǎn)潔。如果我們將太多的邏輯寫(xiě)在模板中,模板將會(huì)變得難以維護(hù)。

????下面舉一反例,我們將字符串逆序的邏輯寫(xiě)在模板中。

<div id="app"> <div id="example"> {{ message.split('').reverse().join('') }} div>div><script> let vm = new Vue({ el: '#app', data: { message: 'Hello World' } })script>

????如果我們將字符串逆序的邏輯抽取到計(jì)算屬性中,模板會(huì)更清晰,改造如下:

<div id="app"> <div id="example"> {{ resMsg }} div>div><script> let vm = new Vue({ el: '#app', data: { message: 'Hello World' }, computed: { resMsg() { return this.message.split('').reverse().join('') } } })script>

????我們?cè)赾omputed中聲明了一個(gè)計(jì)算屬性resMsg,通過(guò)這個(gè)屬性來(lái)接收變量message逆序之后的值。

????火眼金睛的你應(yīng)該發(fā)現(xiàn)了resMsg更像一個(gè)方法,而不像一個(gè)屬性。這是因?yàn)橛?jì)算屬性的簡(jiǎn)寫(xiě)方式導(dǎo)致,不是它的原始樣子,原始樣子如下:

computed: { resMsg: { get() { return this.message.split('').reverse().join('') } } }

????計(jì)算屬性默認(rèn)只有g(shù)et方法,當(dāng)只有g(shù)et方法時(shí),就可以進(jìn)行簡(jiǎn)寫(xiě)。

????當(dāng)然,如果有需要,我們可以為計(jì)算屬性提供它的set方法,set方法在計(jì)算屬性的值被修改時(shí)自動(dòng)調(diào)用。這個(gè)特性一般在前后端交互時(shí),數(shù)據(jù)格式不一致時(shí)會(huì)用到。比如時(shí)間、金錢(qián)等等在前后端的格式就通常不一樣。

????我們以錢(qián)為例來(lái)說(shuō)明一下set方法的應(yīng)用場(chǎng)景。

????通常情況下,后端為了避開(kāi)浮點(diǎn)數(shù)存儲(chǔ)不精確的問(wèn)題,會(huì)以分為單位進(jìn)行整數(shù)存儲(chǔ)。然而,前端在展示的時(shí)候,通常是以元為單位,這時(shí)兩個(gè)單位就不一致,它們相差100倍。

????現(xiàn)在前端通過(guò)接口調(diào)用,拿到的錢(qián)是100分,賦值給cents變量,該值要轉(zhuǎn)化成元在頁(yè)面上展示,我們就可以聲明一個(gè)yuan的計(jì)算屬性去實(shí)現(xiàn)。當(dāng)計(jì)算屬性yuan被修改時(shí),對(duì)應(yīng)的分又要賦值到cents變量上,這時(shí)候set方法就派上用場(chǎng)了,代碼如下

<div id="app"> 分:{{cents}} <hr> 元:{{yuan}} <hr> 改變?cè)?#xff1a;<input type="text" v-model="yuan">div><script> let vm = new Vue({ el: '#app', data: { cents: 100 }, computed: { yuan: { get: function () { return this.cents / 100; }, set: function (newVal) { this.cents = newVal * 100 } } } })script>

????我們就通過(guò)set方法自動(dòng)被調(diào)用的特性,在方法內(nèi)部,將元轉(zhuǎn)變成分,并賦值給cents變量。

????通常情況下,我們只會(huì)用到get方法,所以簡(jiǎn)寫(xiě)形式居多,但不要把它當(dāng)做方法。它跟方法是不一樣的,方法的每次調(diào)用,方法內(nèi)部邏輯都會(huì)執(zhí)行一遍。計(jì)算屬性卻不會(huì),它具備基于依賴(lài)的緩存能力。下面例子來(lái)證實(shí)這個(gè)現(xiàn)象。

<div id="app"> <div>{{reverseMsg}}div> <div>{{reverseMsg}}div> <hr> <div>{{reverseStr(msg)}}div> <div>{{reverseStr(msg)}}div>div><script> let vm = new Vue({ el: '#app', data: { msg: 'Hello' }, computed: { reverseMsg() { console.log('computed') return this.msg.split('').reverse().join('') } }, methods: { reverseStr() { console.log('method') return this.msg.split('').reverse().join('') } } })script>

????上面代碼中,計(jì)算屬性在模板中使用了兩次,方法調(diào)用也使用了兩次,我們查看打印發(fā)現(xiàn)

????方法中的打印語(yǔ)句執(zhí)行了兩次,而計(jì)算屬性中的打印語(yǔ)句卻只執(zhí)行了一次。這就驗(yàn)證了,計(jì)算屬性的簡(jiǎn)寫(xiě)形式雖然長(zhǎng)得跟方法一模一樣,但它確實(shí)不是方法。

二、偵聽(tīng)器

????偵聽(tīng)器也可以監(jiān)聽(tīng)到data中的數(shù)據(jù)變化,當(dāng)data中某個(gè)變量的數(shù)據(jù)發(fā)生變化時(shí),對(duì)應(yīng)的偵聽(tīng)器方法就會(huì)被執(zhí)行,偵聽(tīng)器的方法名必須跟被偵聽(tīng)的變量名一樣。

<div id="app"> <label> 名: <input type="text" v-model="firstName"> label> <br> <label> 姓: <input type="text" v-model="lastName"> label> <br> {{fullName}}div><script> let vm = new Vue({ el: '#app', data: { firstName: 'Jim', lastName: 'Green', fullName: 'Jim Green' }, watch: { firstName(val) { console.log('firstName has changed') this.fullName = val + ' ' + this.lastName }, lastName(val) { console.log('lastName has changed') this.fullName = this.firstName + ' ' + val } } })script>

??? firstName(val)就是監(jiān)聽(tīng)firstName變化時(shí)被調(diào)用的函數(shù),lastName(val)就是監(jiān)聽(tīng)lastName變化時(shí)被調(diào)用的函數(shù)。運(yùn)行頁(yè)面如下:

????當(dāng)我們修改firstName的值時(shí),firstName(val)方法就會(huì)被調(diào)用,并且新值會(huì)傳遞給val變量,我們利用新值可以去更新fullName變量。

????偵聽(tīng)器的應(yīng)用場(chǎng)景通常是數(shù)據(jù)變化時(shí)需要執(zhí)行異步操作開(kāi)銷(xiāo)較大的操作。

總結(jié)

????計(jì)算屬性和偵聽(tīng)器有相似之處,又有不同之處。相似之處是,它們都可以監(jiān)聽(tīng)到數(shù)據(jù)的變化,從而執(zhí)行自己的處理邏輯。但是它們的應(yīng)用場(chǎng)景是不一樣的,平常開(kāi)發(fā)中,計(jì)算屬性使用頻率更高。

總結(jié)

以上是生活随笔為你收集整理的vue修改计算属性的值_Vue语法高级之计算属性和侦听器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 毛片av网址 | 国产精品v| 午夜激情亚洲 | 男人天堂亚洲 | 青青青视频免费 | 婷婷六月网 | 樱花动漫无圣光 | 91色综合| 久久久久久午夜 | 国产人妻大战黑人20p | 国产精品一区二区在线 | 国产精品偷伦视频免费观看了 | a天堂在线 | 黄wwwww| 粗了大了 整进去好爽视频 日本女优中文字幕 | 亚洲AV无码久久精品国产一区 | 免费视频91 | 欧美黑吊大战白妞 | 999精品一区| 国产精品无码自拍 | 日本一区不卡 | 草草影院在线 | free欧美性69护士呻吟 | 国产男女视频在线观看 | 国产综合精品久久久久成人影 | 91漂亮少妇露脸在线播放 | 99资源| 日韩欧美国产片 | 中文字幕二 | 依人综合 | 久久久久久久久99精品 | 人妻洗澡被强公日日澡电影 | 午夜色婷婷| 手机在线观看毛片 | 亚洲国产天堂av | 国产中文一区二区三区 | 青青久操| 五月婷婷久久久 | 欧美瑟瑟 | а√天堂资源官网在线资源 | 中文文字幕文字幕高清 | 日韩h在线观看 | 日韩精彩视频在线观看 | 99思思| 免费观看的av网站 | 大胸美女无遮挡 | www.伊人 | 日韩精品视频在线 | 日本丰满少妇做爰爽爽 | 色翁荡息又大又硬又粗又爽 | av资源天堂 | 国产永久在线观看 | 超碰福利在线 | 成人免费视频观看视频 | 久久99精品国产麻豆婷婷洗澡 | 阿的白色内裤hd中文 | 秋霞一级视频 | 久久一区二区三区视频 | 99久久人妻无码中文字幕系列 | 丁香六月色 | 岛国一区 | 亚洲国产999 | 亚洲影视一区二区三区 | av一区二区在线播放 | 美女在线观看视频 | 国产一区二区三区在线观看 | 日韩中文字幕亚洲精品欧美 | www.色妞| 久草手机在线视频 | 熟妇高潮一区二区三区在线播放 | 亚洲综合射| va免费视频 | 亚洲一区二区三区四区av | 91禁动漫在线 | 夜夜摸视频网 | 日本视频一区二区三区 | 午夜黄色在线 | 天天爱天天草 | 免费在线性爱视频 | 91啪在线观看 | 91麻豆映画传媒 | 麻豆com| 国产精品扒开腿做爽爽 | 精品乱码久久久久久中文字幕 | 久色在线 | 国产精品69久久久久孕妇欧美 | 天天草夜夜操 | 亚洲开心网 | 性视频网| 国产日 | 国产一区二区三区成人 | 91在线观看欧美日韩 | 国产精品乱 | 国内自拍av | 清纯唯美亚洲激情 | 91综合国产| 免费看aaaaa级少淫片 | 狠狠撸狠狠干 | 男人扒女人添高潮视频 |