亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

計(jì)算屬性的緩存

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

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

        <!--2.通過(guò)定義methods-->
        <h2>{{getFullName()}}</h2>
        
        <!--3.通過(guò)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í)會(huì)多次調(diào)用,而computed只調(diào)用一次

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

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

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

  • 計(jì)算屬性可以同時(shí)按多個(gè)Vue實(shí)例來(lái)計(jì)算,只要其中任何一個(gè)數(shù)據(jù)發(fā)生變化,
  • 計(jì)算屬性就會(huì)重新計(jì)算一遍,返回新的數(shù)據(jù),相對(duì)的刷新視圖中的數(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一般用來(lái)手動(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ì)算屬性不僅可以通過(guò)當(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>

頁(yè)面顯示:

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

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

但是computed的好處是:

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

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

就拿第一個(gè)例子來(lái)說(shuō):

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

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

相關(guān)文章

  • Vue動(dòng)態(tài)加載異步組件的方法

    Vue動(dòng)態(tài)加載異步組件的方法

    這篇文章主要介紹了Vue動(dòng)態(tài)加載異步組件的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • Vue+jsPlumb實(shí)現(xiàn)連線效果(支持滑動(dòng)連線和點(diǎn)擊連線)

    Vue+jsPlumb實(shí)現(xiàn)連線效果(支持滑動(dòng)連線和點(diǎn)擊連線)

    jsPlumb 是一個(gè)比較強(qiáng)大的繪圖組件,它提供了一種方法,主要用于連接網(wǎng)頁(yè)上的元素。本文將利用jsPlumb實(shí)現(xiàn)連線效果,同時(shí)支持滑動(dòng)連線和點(diǎn)擊連線,感興趣的可以了解一下
    2023-01-01
  • Vue slot插槽的使用詳情

    Vue slot插槽的使用詳情

    這篇文章主要介紹了Vue slot插槽的使用,在生活中很多地方都有插槽,電腦usb的插槽,插板當(dāng)中的電源插槽,插槽的目的是為了讓我們?cè)瓉?lái)的設(shè)備具備更多的擴(kuò)展性比如電腦的USB我們可以插入U(xiǎn)盤(pán),手機(jī),鼠標(biāo),鍵盤(pán)等等,下面文章就來(lái)介紹Vue slot插槽是如何使用的
    2021-10-10
  • 深入詳解Vue3 ref底層實(shí)現(xiàn)原理

    深入詳解Vue3 ref底層實(shí)現(xiàn)原理

    隨著現(xiàn)在vue3越來(lái)越普及,相應(yīng)的面試題也多了起來(lái)。說(shuō)到vue3的面試題,有一個(gè)最經(jīng)典的就是對(duì)于實(shí)現(xiàn)ref和reactive這兩個(gè)方法的底層原理,本文就來(lái)和大家簡(jiǎn)單講講吧
    2023-04-04
  • Vue.js系列之項(xiàng)目搭建(1)

    Vue.js系列之項(xiàng)目搭建(1)

    今天要講講Vue2.0了。最近將公司App3.0用vue2.0構(gòu)建了一個(gè)web版,因?yàn)槭堑谝淮问褂胿ue,而且一開(kāi)始使用的時(shí)候2.0出來(lái)一個(gè)月不到,很多坑都是自己去踩的,現(xiàn)在項(xiàng)目要上線了,所以記錄一些過(guò)程
    2017-01-01
  • Vue.Js中的$watch()方法總結(jié)

    Vue.Js中的$watch()方法總結(jié)

    這篇文章主要給大家介紹了在Vue.Js中的$watch()方法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-03-03
  • vue自定義指令實(shí)現(xiàn)元素滑動(dòng)移動(dòng)端適配及邊界處理

    vue自定義指令實(shí)現(xiàn)元素滑動(dòng)移動(dòng)端適配及邊界處理

    這篇文章主要為大家介紹了vue自定義指令實(shí)現(xiàn)元素滑動(dòng)移動(dòng)端適配及邊界處理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 前端架構(gòu)vue架構(gòu)插槽slot使用教程

    前端架構(gòu)vue架構(gòu)插槽slot使用教程

    這篇文章主要為大家介紹了前端vue架構(gòu)插槽slot使用教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-02-02
  • vue使用echarts實(shí)現(xiàn)中國(guó)地圖和點(diǎn)擊省份進(jìn)行查看功能

    vue使用echarts實(shí)現(xiàn)中國(guó)地圖和點(diǎn)擊省份進(jìn)行查看功能

    這篇文章主要介紹了vue使用echarts實(shí)現(xiàn)中國(guó)地圖和點(diǎn)擊省份進(jìn)行查看功能,本文通過(guò)實(shí)例代碼給大家詳細(xì)講解,對(duì)vue echarts 中國(guó)地圖相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-12-12
  • Vue編譯器解析compile源碼解析

    Vue編譯器解析compile源碼解析

    這篇文章主要為大家介紹了Vue編譯器解析compile源碼解析示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07

最新評(píng)論