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

vue之計(jì)算屬性的緩存computed的用法解讀

 更新時(shí)間:2022年11月17日 09:33:45   作者:兮動(dòng)人  
這篇文章主要介紹了vue之計(jì)算屬性的緩存computed的用法解讀,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

vue計(jì)算屬性的緩存computed用法

計(jì)算屬性的緩存

我們可能會考慮這樣的一個(gè)問題:methods和computed看起來都可以實(shí)現(xiàn)我們的功能,那么為什么還要多一個(gè)計(jì)算屬性這個(gè)東西呢?原因:計(jì)算屬性會進(jìn)行緩存,如果多次使用時(shí),計(jì)算屬性只會調(diào)用一次。我們來看下面的代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="app">
        <!--1.直接拼接:語法過于繁瑣-->
        <h2>{{firstName}} {{lastName}}</h2>

        <!--2.通過定義methods-->
        <h2>{{getFullName()}}</h2>
        
        <!--3.通過computed-->
        <h2>{{fullName}}</h2>
    </div>

    <script src="../js/vue.js"></script>
    <script>
        const app = new Vue({
        el: '#app',
        data: {
            firstName: 'Kobe',
            lastName: 'Bryant'
            },
            methods: {
                getFullName: function () {
                    return this.firstName+' '+this.lastName
                }
            },
            computed: {
                fullName: function () {
                    return this.firstName+' '+this.lastName
                }
            }
        })
    </script>
</body>
</html>

在多次循環(huán)使用時(shí),methods時(shí)會多次調(diào)用,而computed只調(diào)用一次

computed計(jì)算屬性設(shè)置與緩存問題

簡單的一些小計(jì)算可以直接用模板內(nèi)的表達(dá)式計(jì)算,比較復(fù)雜一點(diǎn)的就建議使用“計(jì)算屬性來運(yùn)算了”,也方便后期的維護(hù);

vue所有的計(jì)算屬性都以函數(shù)的形式寫在Vue實(shí)例內(nèi)的computed里面,返回計(jì)算后的數(shù)據(jù)。

  • 計(jì)算屬性可以同時(shí)按多個(gè)Vue實(shí)例來計(jì)算,只要其中任何一個(gè)數(shù)據(jù)發(fā)生變化,
  • 計(jì)算屬性就會重新計(jì)算一遍,返回新的數(shù)據(jù),相對的刷新視圖中的數(shù)據(jù)

比如:

<div id="v1">
    <!--這里顯示的是computed中的函數(shù)-->
    共計(jì):{{ total }}
</div>


<script src="vue.min.js"></script>
<script>
    var app=new Vue({
        el:"#v1",
        data:{
            val:[
                { price: 199,num:30},
                { price: 299,num:20},
                { price: 399,num:10}
            ]
        },
        computed:{
            total:function () {
                var vel=this.val;
                var sum=0,len=vel.length;
                for(var i=0;i<len;i++){
                    sum+=vel[i].price * vel[i].num
                }
                return sum;
            }
        }
    })
</script>

每個(gè)計(jì)算屬性都有一個(gè)getter函數(shù) 和 setter函數(shù),上面的示例只是用了computed的唯一默認(rèn)屬性,就是getter , setter一般用來手動(dòng)修改數(shù)據(jù)

<div id="v1">
    {{ value }}
</div>


<script src="vue.min.js"></script>
<script>
    var app=new Vue({
        el:"#v1",
        data:{
            first:"Sherlock",
            second:"love",
            third:"John"
        },
        computed:{
            value: {
                get:function () {     //getter讀取數(shù)據(jù)
                    return this.first + " ~ " + this.second + " ~ " +  this.third
                },

                set:function (val) {    //setter 需要時(shí)觸發(fā)
                    var result=val.split(" ~ ");
                    this.first=result[0];
                    this.third=result[2];
                }
            }
        }
    });

    app.value="John ~ love ~ Sherlock";  //在這里觸發(fā)setter
</script>

另外,計(jì)算屬性不僅可以通過當(dāng)前的當(dāng)前的實(shí)例數(shù)據(jù)計(jì)算,也可以做到 “跨實(shí)例” 取值,用法如下:

<script>
    var v1=new Vue({
        el:"#v1",
        data:{
            num:1
        }
    });

    var v2=new Vue({
        el:"#v2",
        data:{
            num:2
        },
        computed:{
            total:function () {
                var n1="我是上一個(gè)實(shí)例的數(shù)據(jù) :"+v1.num,
                    n2="我是本實(shí)例的數(shù)據(jù):"+this.num;
                return n1 +" .............  " +n2;
            }
        }
    })
</script>

頁面顯示:

對于computed計(jì)算屬性來說還有一個(gè)很重要的作用就是:緩存

一般情況下,computed(計(jì)算屬性) 和 methods(方法)執(zhí)行出來的效果是一樣的,

但是computed的好處是:

只有在與它相關(guān)或者需要的數(shù)據(jù)發(fā)生改變時(shí)才會重新求值。

這就意味著只要 我們在計(jì)算時(shí)設(shè)置的數(shù)據(jù)還沒有發(fā)生改變,即使多次訪問 reversedMessage 計(jì)算屬性會立即返回之前的計(jì)算結(jié)果,而不必再次執(zhí)行函數(shù)。

就拿第一個(gè)例子來說:

相對的,每當(dāng)觸發(fā)重新渲染時(shí),調(diào)用方法將總會再次執(zhí)行函數(shù)。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue.js通用應(yīng)用框架-Nuxt.js的上手教程

    Vue.js通用應(yīng)用框架-Nuxt.js的上手教程

    本篇文章主要介紹了Vue.js通用應(yīng)用框架-Nuxt.js的上手教程,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • vue.js 動(dòng)態(tài)組件詳解

    vue.js 動(dòng)態(tài)組件詳解

    這篇文章主要介紹了vue.js 動(dòng)態(tài)組件詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • vue init失敗簡單解決方法(終極版)

    vue init失敗簡單解決方法(終極版)

    這篇文章主要介紹了vue init失敗的簡單解決方法-終極版,需要的朋友可以參考下
    2017-12-12
  • 如何為vue的項(xiàng)目添加單元測試

    如何為vue的項(xiàng)目添加單元測試

    這篇文章主要介紹了如何為vue的項(xiàng)目添加單元測試,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • Element Popover 彈出框的使用示例

    Element Popover 彈出框的使用示例

    這篇文章主要介紹了Element Popover 彈出框的使用示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 分享一個(gè)vue項(xiàng)目“腳手架”項(xiàng)目的實(shí)現(xiàn)步驟

    分享一個(gè)vue項(xiàng)目“腳手架”項(xiàng)目的實(shí)現(xiàn)步驟

    這篇文章主要介紹了分享一個(gè)vue項(xiàng)目“腳手架”項(xiàng)目的實(shí)現(xiàn)步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-05-05
  • vue實(shí)現(xiàn)周日歷切換效果

    vue實(shí)現(xiàn)周日歷切換效果

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)周日歷切換效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • vue實(shí)現(xiàn)秒殺倒計(jì)時(shí)組件

    vue實(shí)現(xiàn)秒殺倒計(jì)時(shí)組件

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)秒殺倒計(jì)時(shí)組件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Vue的過濾器你真了解嗎

    Vue的過濾器你真了解嗎

    這篇文章主要為大家詳細(xì)介紹了Vue的過濾器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 詳解vue-cli構(gòu)建項(xiàng)目反向代理配置

    詳解vue-cli構(gòu)建項(xiàng)目反向代理配置

    本篇文章主要介紹了詳解vue-cli構(gòu)建項(xiàng)目反向代理配置,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09

最新評論

定陶县| 莱阳市| 汽车| 三门县| 肇庆市| 澄城县| 南宫市| 宜丰县| 民和| 石柱| 清河县| 多伦县| 莆田市| 安义县| 民权县| 贺兰县| 定结县| 遵义县| 什邡市| 安岳县| 普宁市| 如东县| 长海县| 界首市| 秀山| 神农架林区| 金华市| 南通市| 内丘县| 兴文县| 民乐县| 沁阳市| 宁安市| 磐石市| 越西县| 周口市| 沭阳县| 余庆县| 伊通| 沅江市| 永清县|