最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于vue中計(jì)算屬性computed的詳細(xì)講解

 更新時(shí)間:2022年07月10日 09:56:21   作者:alical  
computed是vue的配置選項(xiàng),它的值是一個(gè)對(duì)象,其中可定義多個(gè)計(jì)算屬性,每個(gè)計(jì)算屬性就是一個(gè)函數(shù),下面這篇文章主要給大家介紹了關(guān)于vue中計(jì)算屬性computed的詳細(xì)講解,需要的朋友可以參考下

1.定義

computed是vue的計(jì)算屬性,是根據(jù)依賴關(guān)系進(jìn)行緩存的計(jì)算,只有在它的相關(guān)依賴發(fā)生改變時(shí)才會(huì)進(jìn)行更新

2.用法

一般情況下,computed默認(rèn)使用的是getter屬性

3.computed的響應(yīng)式依賴(緩存)

1. computed的每一個(gè)計(jì)算屬性都會(huì)被緩存起來(lái),只要計(jì)算屬性所依賴的屬性發(fā)生變化,計(jì)算屬性就會(huì)重新執(zhí)行,視圖也會(huì)更新。下面代碼中,計(jì)算屬性fullName,它依賴了firstNamelastName這兩個(gè)屬性,只要它們其中一個(gè)屬性變化,fullName就會(huì)重新執(zhí)行。

2.computed計(jì)算屬性會(huì)被緩存,在下面代碼中使用了兩次fullName,但在控制臺(tái)只輸出了一次 “這是fullName”。

<template>
  <div>
    <div>
      姓:<input type="text" v-model="firstName" />
    </div>
    <div>
      名:<input type="text" v-model="lastName" />
    </div>
    <!-- 調(diào)用兩次fullName -->
    <div>姓名:{{ fullName }}</div>
    <div>姓名:{{ fullName }}</div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      firstName: "張",
      lastName: "三",
    };
  },
  computed: {
    fullName() {
        console.log("這是fullName");
        return this.firstName + this.lastName;
    }
  }
};
</script>

4.應(yīng)用場(chǎng)景

當(dāng)一個(gè)數(shù)據(jù)受多個(gè)數(shù)據(jù)影響時(shí),可以使用computed

1.本組件計(jì)算

2.計(jì)算props的值

3.計(jì)算vuex的state或者getters值的變化

附:計(jì)算屬性的 getter 與 setter

默認(rèn)情況下,計(jì)算屬性函數(shù)是一個(gè) getter 函數(shù),如果計(jì)算屬性只有 get 需求,則可以簡(jiǎn)寫

<!DOCTYPE html>
<html lang="en">

<head>
? ? <meta charset="UTF-8">
? ? <meta name="viewport" content="width=device-width, initial-scale=1.0">
? ? <title>Document</title>
? ? <script src="./node_modules/vue/dist/vue.js"></script>
</head>

<body>
? ? <div id="app">
? ? ? ? <div>
? ? ? ? ? ? <!-- <input type="checkbox" v-model='isAll'> -->
? ? ? ? ? ? <input type="text" v-model='n'>
? ? ? ? ? ? +
? ? ? ? ? ? <input type="text" v-model='m'>
? ? ? ? ? ? =
? ? ? ? ? ? <input type="text" v-model='x'>
? ? ? ? </div>
? ? ? ? {{o}}
? ? </div>
? ? <script>
? ? ? ? let vm = new Vue({
? ? ? ? ? ? el: '#app',
? ? ? ? ? ? data: {
? ? ? ? ? ? ? ? is: true,
? ? ? ? ? ? ? ? obj: {
? ? ? ? ? ? ? ? ? ? // a: 1
? ? ? ? ? ? ? ? ? ? a: 1
? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? n: '',
? ? ? ? ? ? ? ? m: ''
? ? ? ? ? ? },
? ? ? ? ? ? computed: {
? ? ? ? ? ? ? ? //計(jì)算屬性在這里寫的屬性不要在data重復(fù)寫 跟data中的數(shù)據(jù)一樣可以通過(guò)vm.獲取或者修改
? ? ? ? ? ? ? ? isAll: {
? ? ? ? ? ? ? ? ? ? get() {
? ? ? ? ? ? ? ? ? ? ? ? //只要獲取這個(gè)屬性就會(huì)觸發(fā)get這個(gè)函數(shù)
? ? ? ? ? ? ? ? ? ? ? ? console.log(1);
? ? ? ? ? ? ? ? ? ? ? ? return this.is
? ? ? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? ? ? set(val) {
? ? ? ? ? ? ? ? ? ? ? ? // val 設(shè)置的值
? ? ? ? ? ? ? ? ? ? ? ? this.isAll = this.is
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? x: {
? ? ? ? ? ? ? ? ? ? // 只要是依賴的值(必須有setter和getter響應(yīng)的數(shù)據(jù))發(fā)生改變了就會(huì)重新計(jì)算自己的值
? ? ? ? ? ? ? ? ? ? get() {
? ? ? ? ? ? ? ? ? ? ? ? return Number(this.n) + Number(this.m)
? ? ? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? ? ? // set(){
? ? ? ? ? ? ? ? ? ? // ? ? Number(this.n) + Number(this.m)
? ? ? ? ? ? ? ? ? ? // }

? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? o: {
? ? ? ? ? ? ? ? ? ? get() {
? ? ? ? ? ? ? ? ? ? ? ? //如果沒有在data的obj中初始化 就沒有g(shù)etter和setter響應(yīng) 當(dāng)改變this.obj.a的時(shí)候不會(huì)影響 數(shù)據(jù)o
? ? ? ? ? ? ? ? ? ? ? ? return this.obj.a + 1
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? ss: {
? ? ? ? ? ? ? ? ? ? get() { },
? ? ? ? ? ? ? ? ? ? //計(jì)算屬性必須要有g(shù)et可以沒有set
? ? ? ? ? ? ? ? ? ? //v-model綁定的計(jì)算屬性有g(shù)et和set
? ? ? ? ? ? ? ? ? ? //其他的一般只有g(shù)et
? ? ? ? ? ? ? ? ? ? set() { }
? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? xx() {
? ? ? ? ? ? ? ? ? ? //如果這個(gè)計(jì)算屬性只有g(shù)et可以寫成一個(gè)函數(shù)的形式
? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? bb() {
? ? ? ? ? ? ? ? ? ? //第一次獲取的時(shí)候依賴值沒有發(fā)生改變但是也會(huì)默認(rèn)執(zhí)行一次
? ? ? ? ? ? ? ? ? ? // 必須要有return ?不支持異步
? ? ? ? ? ? ? ? ? ? let a = 'kk';
? ? ? ? ? ? ? ? ? ? setTimeout(() => {
? ? ? ? ? ? ? ? ? ? ? ? a = this.aa + a
? ? ? ? ? ? ? ? ? ? }, 1000)
? ? ? ? ? ? ? ? ? ? console.log(a);
? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? return this.aa
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? })
? ? </script>
</body>

</html>

參考:https://cn.vuejs.org/v2/guide/computed.html

           https://segmentfault.com/a/110000012948175

總結(jié)

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

相關(guān)文章

  • vue3中addEventListener的用法詳解

    vue3中addEventListener的用法詳解

    vue3中定義全局指令時(shí),往往會(huì)碰到一個(gè)問(wèn)題:事件無(wú)法解綁,為什么會(huì)這樣,因?yàn)橥ǔT谥噶畹膍ounted鉤子中綁定事件,事件處理函數(shù)也定義在mounted中,本文講給大家講講vue3中addEventListener的妙用,需要的朋友可以參考下
    2023-08-08
  • Vue?elementui如何實(shí)現(xiàn)表格selection的默認(rèn)勾選

    Vue?elementui如何實(shí)現(xiàn)表格selection的默認(rèn)勾選

    這篇文章主要介紹了Vue?elementui如何實(shí)現(xiàn)表格selection的默認(rèn)勾選問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Vue獲取當(dāng)前系統(tǒng)日期(年月日)的示例代碼

    Vue獲取當(dāng)前系統(tǒng)日期(年月日)的示例代碼

    發(fā)中會(huì)有要獲取當(dāng)前日期的需求,有的是獲取到當(dāng)前月份,有的是精確到分秒,在 Vue 開發(fā)中,獲取當(dāng)前時(shí)間是一項(xiàng)常見的需求,本文將深入探討Vue獲取當(dāng)前系統(tǒng)日期(年月日),幫助您更好地利用當(dāng)前時(shí)間,需要的朋友可以參考下
    2024-01-01
  • vue3中輕松實(shí)現(xiàn)switch功能組件的全過(guò)程

    vue3中輕松實(shí)現(xiàn)switch功能組件的全過(guò)程

    這篇文章主要給大家介紹了關(guān)于vue3中輕松實(shí)現(xiàn)switch功能組件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • vuecli中chainWebpack的常用操作舉例

    vuecli中chainWebpack的常用操作舉例

    在項(xiàng)目開發(fā)中我們難免碰到需要對(duì)webpack配置更改的情況,下面這篇文章主要給大家介紹了關(guān)于vuecli中chainWebpack的常用操作舉例,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • vue.js 解決v-model讓select默認(rèn)選中不生效的問(wèn)題

    vue.js 解決v-model讓select默認(rèn)選中不生效的問(wèn)題

    這篇文章主要介紹了vue.js 解決v-model讓select默認(rèn)選中不生效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • el-menu彈出菜單樣式不生效的問(wèn)題及解決方法

    el-menu彈出菜單樣式不生效的問(wèn)題及解決方法

    這篇文章主要介紹了el-menu彈出菜單樣式不生效的問(wèn)題及解決方法,修改彈出框元素不在 el-menu 樣式中,我們需要在 el-menu–popup 中修改樣式,具體操作代碼跟隨小編一起看看吧
    2024-07-07
  • Vue中transition的使用及說(shuō)明

    Vue中transition的使用及說(shuō)明

    這篇文章主要介紹了Vue中transition的使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 教你輕松解決Vue?Dialog彈窗詬病

    教你輕松解決Vue?Dialog彈窗詬病

    彈窗經(jīng)常被使用在一些表單的增刪改查啊,或者彈出一些提示信息等等,這篇文章主要給大家介紹了關(guān)于Vue?Dialog彈窗詬病解決的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • 詳解如何使用vue和electron開發(fā)一個(gè)桌面應(yīng)用

    詳解如何使用vue和electron開發(fā)一個(gè)桌面應(yīng)用

    這篇文章主要為大家介紹了詳解如何使用vue和electron開發(fā)一個(gè)桌面應(yīng)用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03

最新評(píng)論

吉木乃县| 青铜峡市| 江川县| 得荣县| 九龙坡区| 定安县| 铁岭市| 兰州市| 兴业县| 镇江市| 营山县| 怀来县| 泰和县| 新宾| 云霄县| 卓尼县| 铜山县| 钟山县| 和田县| 平泉县| 左权县| 南宁市| 汶川县| 酒泉市| 宜兰县| 抚顺市| 靖宇县| 海宁市| 林甸县| 梅河口市| 浦城县| 辉县市| 郑州市| 罗田县| 松滋市| 武陟县| 沂南县| 桦川县| 马公市| 亚东县| 洱源县|