欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue 計(jì)算屬性 computed

 更新時(shí)間:2021年10月26日 16:07:19   作者:Silent丿丶黑羽  
這篇文章主要介紹了Vue 計(jì)算屬性 computed,一般情況下屬性都是放到data中的,但是有些屬性可能是需要經(jīng)過一些邏輯計(jì)算后才能得出來,那么我們可以把這類屬性變成計(jì)算屬性,下面我們來看看具體實(shí)例,需要的朋友可以參考一下

前言:

一般情況下屬性都是放到data中的,但是有些屬性可能是需要經(jīng)過一些邏輯計(jì)算后才能得出來,那么我們可以把這類屬性變成計(jì)算屬性。

比如以下:

<div id="example">
  {{ message.split('').reverse().join('') }}
</div>


在這個(gè)地方,模板不再是簡單的聲明式邏輯。你必須看一段時(shí)間才能意識到,這里是想要顯示變量 message 的翻轉(zhuǎn)字符串。當(dāng)你想要在模板中的多處包含此翻轉(zhuǎn)字符串時(shí),就會(huì)更加難以處理。

所以,對于任何復(fù)雜邏輯,你都應(yīng)當(dāng)使用計(jì)算屬性。

1、基礎(chǔ)例子

<div id="app">
  <h2>總價(jià)格:{{totalPrice}}</h2>
</div>
<script>
  const vm = new Vue({
    el: "#app",
    data: {
      message: "hello",
      books: [
        {name: '三國演義', price: 30},
        {name: '紅樓夢', price: 40},
        {name: '西游記', price: 50},
        {name: '水滸傳', price: 60},
      ],
    },
    computed: {
      // 計(jì)算屬性的 getter
      totalPrice: function (){
          let result = 0;
          // `this` 指向 vm 實(shí)例
          for (let book of this.books){
            result += book.price;
          }
          return result
      }
    }
  })
</script>


結(jié)果:總價(jià)格:180

這里我們聲明了一個(gè)計(jì)算屬性 totalPrice。然后通過for循環(huán)計(jì)算出書的總價(jià),像這種需要計(jì)算的屬性,就寫在computed中。

屬性一般都有getset兩個(gè)方法,get獲取屬性值,set設(shè)置屬性值,computed中默認(rèn)就是get屬性,我們的vm.totalPrice是依賴于books.price,如果書本的價(jià)格發(fā)生變化,那么計(jì)算屬性totalPrice也隨之動(dòng)態(tài)變化

2、計(jì)算屬性緩存 vs 方法

你可能已經(jīng)注意到我們可以通過在表達(dá)式中調(diào)用方法來達(dá)到同樣的效果:

<div id="app">
  <h2>總價(jià)格:{{getAllPrice()}}</h2>
</div>
<script>
  const vm = new Vue({
    el: "#app",
    data: {
      message: "hello",
      books: [
        {name: '三國演義', price: 30},
        {name: '紅樓夢', price: 40},
        {name: '西游記', price: 50},
        {name: '水滸傳', price: 60},
      ],
    },
    methods: {
      getAllPrice: function () {
        let result = 0;
        // `this` 指向 vm 實(shí)例
        for (let book of this.books){
          result += book.price;
        }
        return result
      }
    },
  })
</script>

我們可以將同一函數(shù)定義為一個(gè)方法而不是一個(gè)計(jì)算屬性。兩種方式的最終結(jié)果確實(shí)是完全相同的。然而,不同的是計(jì)算屬性是基于它們的響應(yīng)式依賴進(jìn)行緩存的。只在相關(guān)響應(yīng)式依賴發(fā)生改變時(shí)它們才會(huì)重新求值。這就意味著只要 books 還沒有發(fā)生改變,多次訪問 totalPrice 計(jì)算屬性會(huì)立即返回之前的計(jì)算結(jié)果,而不必再次執(zhí)行函數(shù)。

所以說計(jì)算屬性是有緩存的

我們?yōu)槭裁葱枰彺??假設(shè)我們有一個(gè)性能開銷比較大的計(jì)算屬性 A,它需要遍歷一個(gè)巨大的數(shù)組并做大量的計(jì)算。然后我們可能有其他的計(jì)算屬性依賴于 A。如果沒有緩存,我們將不可避免的多次執(zhí)行 Agetter!如果你不希望有緩存,請用方法來替代。

3、計(jì)算屬性的 setter

計(jì)算屬性默認(rèn)只有 getter,不過在需要時(shí)你也可以提供一個(gè) setter

computed: {
  totalPrice: {
    get: function () {
      let result = 0;
      // `this` 指向 vm 實(shí)例
      for (let book of this.books){
        result += book.price;
      }
      return result
    },
    set: function (newValue) {
      for (let book of this.books){
        book.price += 10
      }
    }
  }
}


這里我們添加了set方法,在運(yùn)行vm.totalPrice=[...]時(shí),setter 會(huì)被調(diào)用,隨后書本的總價(jià)格也會(huì)隨之變化,但是一般情況下不會(huì)使用set

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

相關(guān)文章

  • vue+node+webpack環(huán)境搭建教程

    vue+node+webpack環(huán)境搭建教程

    這篇文章主要為大家詳細(xì)介紹了vue+node+webpack環(huán)境搭建教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • vue使用better-scroll實(shí)現(xiàn)滑動(dòng)以及左右聯(lián)動(dòng)

    vue使用better-scroll實(shí)現(xiàn)滑動(dòng)以及左右聯(lián)動(dòng)

    這篇文章主要介紹了vue使用better-scroll實(shí)現(xiàn)滑動(dòng)以及左右聯(lián)動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • VUE開發(fā)分布式醫(yī)療掛號系統(tǒng)后臺管理頁面步驟

    VUE開發(fā)分布式醫(yī)療掛號系統(tǒng)后臺管理頁面步驟

    本文從整體上介紹Vue框架的開發(fā)流程,結(jié)合具體的案例,使用Vue框架調(diào)用具體的后端接口,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • vue控制多行文字展開收起的實(shí)現(xiàn)示例

    vue控制多行文字展開收起的實(shí)現(xiàn)示例

    這篇文章主要介紹了vue控制多行文字展開收起的實(shí)現(xiàn)示例(也叫控制文字展開隱藏),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • vue 數(shù)組和對象不能直接賦值情況和解決方法(推薦)

    vue 數(shù)組和對象不能直接賦值情況和解決方法(推薦)

    這篇文章主要介紹了vue 數(shù)組和對象不能直接賦值情況和解決方法,需要的朋友可以參考下
    2017-10-10
  • vue中map()快速使用方法小結(jié)

    vue中map()快速使用方法小結(jié)

    map()函數(shù)是在JS的數(shù)組中定義的,它返回一個(gè)新的數(shù)組,下面這篇文章主要給大家介紹了關(guān)于vue中map()快速使用的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • vue中頁面跳轉(zhuǎn)攔截器的實(shí)現(xiàn)方法

    vue中頁面跳轉(zhuǎn)攔截器的實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于vue中頁面跳轉(zhuǎn)攔截器的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • Vue實(shí)現(xiàn)牌面翻轉(zhuǎn)效果

    Vue實(shí)現(xiàn)牌面翻轉(zhuǎn)效果

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)牌面翻轉(zhuǎn)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 在Vue3項(xiàng)目中使用VueCropper裁剪組件實(shí)現(xiàn)裁剪及預(yù)覽效果

    在Vue3項(xiàng)目中使用VueCropper裁剪組件實(shí)現(xiàn)裁剪及預(yù)覽效果

    這篇文章主要介紹了在Vue3項(xiàng)目中使用VueCropper裁剪組件(裁剪及預(yù)覽效果),本文分步驟結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • vue父子組件進(jìn)行通信方式原來是這樣的

    vue父子組件進(jìn)行通信方式原來是這樣的

    這篇文章主要為大家詳細(xì)介紹了vue父子組件進(jìn)行通信方式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02

最新評論