【Vue】計算屬性computed

computed 是一種用于聲明計算屬性的 API犬第。計算屬性是一種根據(jù)其他數(shù)據(jù)的變化而動態(tài)計算得到的屬性型宙,它們的值會被緩存疮茄,只有在相關(guān)依賴發(fā)生變化時才會重新計算擎浴。
import { ref, computed } from 'vue';

const data = ref(5);

// 創(chuàng)建一個計算屬性
const squared = computed(() => {
  return data.value * data.value;
});

console.log(squared.value); // 輸出 25

// 當(dāng) data 的值變化時员咽,squared 會自動更新
data.value = 6;
console.log(squared.value); // 輸出 36

在上面的例子中,squared 是一個計算屬性贮预,它依賴于 data 的值贝室。計算屬性的定義是一個函數(shù),該函數(shù)返回計算的結(jié)果仿吞。在模板或其他計算屬性中滑频,你可以通過訪問 squared.value 來獲取計算屬性的值。

計算屬性的依賴:
Vue 3 會追蹤計算屬性的依賴關(guān)系唤冈,當(dāng)依賴的數(shù)據(jù)發(fā)生變化時峡迷,計算屬性會被重新計算。在上面的例子中,squared 依賴于 data绘搞,所以當(dāng) data 變化時彤避,squared 會重新計算。

計算屬性的 Setter:
你還可以為計算屬性提供一個 setter 函數(shù)夯辖,用于處理對計算屬性的賦值操作琉预。

import { ref, computed } from 'vue';

const data = ref(5);

// 創(chuàng)建一個計算屬性
const squared = computed({
  get: () => data.value * data.value,
  set: (value) => {
    // 在這里處理對計算屬性的賦值操作
    data.value = Math.sqrt(value);
  }
});

console.log(squared.value); // 輸出 25

// 賦值操作會調(diào)用 setter
squared.value = 36;
console.log(data.value); // 輸出 6

在上面的例子中,當(dāng)對 squared 進(jìn)行賦值操作時蒿褂,會調(diào)用 set 函數(shù)圆米,然后更新 data 的值。這種方式允許你在計算屬性被修改時執(zhí)行一些額外的邏輯啄栓。

總體來說娄帖,computed 計算屬性是 Vue 中一種非常強大且方便的特性,使你能夠以聲明式的方式定義派生狀態(tài)谴供。

<template>
  <div class="person">
    姓:<input type="text" v-model="firstName" /><br />
    名:<input type="text" v-model="lastName" /><br />
      全名:<span>{{ fullName }}</span> <br /> 
      <!-- {{ fullName2() }}
      {{ fullName2() }}
      {{ fullName2() }}
      {{ fullName2() }}
      {{ fullName2() }} -->
  </div>
</template> 
<script lang="ts" setup name="Person">
import { ref, computed } from "vue";
let firstName = ref("張");
let lastName = ref("三");
// 方法會調(diào)用多次
function fullName2(){
  console.log('fullName2')
  return firstName.value + "-" + lastName.value;
}
// 計算屬性有緩存块茁,只會調(diào)用一次
// 這么定義的fullName是一個計算屬性,且是只讀的
/* let fullName = computed(() => {
  console.log('computed-----fullName')
  return firstName.value + "-" + lastName.value;
}); */
let fullName =computed({
  get(){
    return firstName.value + "-" + lastName.value;
  },
  set(val){
  const [str1,str2] =  val.split('-')
      firstName.value=str1;
      lastName.value=str2;
  }
})
</script>
<style>
.person {
  background-color: skyblue;
  box-shadow: 0 0 10px;
  border-radius: 10px;
  padding: 20px;
}

.button {
  margin: 0 5px;
}
.li {
  font-size: 30px;
}
</style>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末桂肌,一起剝皮案震驚了整個濱河市数焊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌崎场,老刑警劉巖佩耳,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異谭跨,居然都是意外死亡干厚,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門螃宙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蛮瞄,“玉大人,你說我怎么就攤上這事谆扎」彝保” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵堂湖,是天一觀的道長闲先。 經(jīng)常有香客問我,道長无蜂,這世上最難降的妖魔是什么伺糠? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮斥季,結(jié)果婚禮上训桶,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好渊迁,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布慰照。 她就那樣靜靜地躺著,像睡著了一般琉朽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上稚铣,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天箱叁,我揣著相機與錄音,去河邊找鬼惕医。 笑死耕漱,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的抬伺。 我是一名探鬼主播螟够,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼峡钓!你這毒婦竟也來了妓笙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤能岩,失蹤者是張志新(化名)和其女友劉穎寞宫,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拉鹃,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡辈赋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了膏燕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钥屈。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖坝辫,靈堂內(nèi)的尸體忽然破棺而出篷就,到底是詐尸還是另有隱情,我是刑警寧澤阀溶,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布腻脏,位于F島的核電站,受9級特大地震影響银锻,放射性物質(zhì)發(fā)生泄漏永品。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一击纬、第九天 我趴在偏房一處隱蔽的房頂上張望鼎姐。 院中可真熱鬧,春花似錦、人聲如沸炕桨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽献宫。三九已至钥平,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間姊途,已是汗流浹背涉瘾。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留捷兰,地道東北人立叛。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像贡茅,于是被迫代替她去往敵國和親秘蛇。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容