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

vue之計算屬性的緩存computed的用法解讀

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

vue計算屬性的緩存computed用法

計算屬性的緩存

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

<!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)使用時,methods時會多次調用,而computed只調用一次

computed計算屬性設置與緩存問題

簡單的一些小計算可以直接用模板內的表達式計算,比較復雜一點的就建議使用“計算屬性來運算了”,也方便后期的維護;

vue所有的計算屬性都以函數的形式寫在Vue實例內的computed里面,返回計算后的數據。

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

比如:

<div id="v1">
    <!--這里顯示的是computed中的函數-->
    共計:{{ 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>

每個計算屬性都有一個getter函數 和 setter函數,上面的示例只是用了computed的唯一默認屬性,就是getter , setter一般用來手動修改數據

<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讀取數據
                    return this.first + " ~ " + this.second + " ~ " +  this.third
                },

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

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

另外,計算屬性不僅可以通過當前的當前的實例數據計算,也可以做到 “跨實例” 取值,用法如下:

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

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

頁面顯示:

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

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

但是computed的好處是:

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

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

就拿第一個例子來說:

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

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

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

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

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

    Vue+jsPlumb實現連線效果(支持滑動連線和點擊連線)

    jsPlumb 是一個比較強大的繪圖組件,它提供了一種方法,主要用于連接網頁上的元素。本文將利用jsPlumb實現連線效果,同時支持滑動連線和點擊連線,感興趣的可以了解一下
    2023-01-01
  • Vue slot插槽的使用詳情

    Vue slot插槽的使用詳情

    這篇文章主要介紹了Vue slot插槽的使用,在生活中很多地方都有插槽,電腦usb的插槽,插板當中的電源插槽,插槽的目的是為了讓我們原來的設備具備更多的擴展性比如電腦的USB我們可以插入U盤,手機,鼠標,鍵盤等等,下面文章就來介紹Vue slot插槽是如何使用的
    2021-10-10
  • 深入詳解Vue3 ref底層實現原理

    深入詳解Vue3 ref底層實現原理

    隨著現在vue3越來越普及,相應的面試題也多了起來。說到vue3的面試題,有一個最經典的就是對于實現ref和reactive這兩個方法的底層原理,本文就來和大家簡單講講吧
    2023-04-04
  • Vue.js系列之項目搭建(1)

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

    今天要講講Vue2.0了。最近將公司App3.0用vue2.0構建了一個web版,因為是第一次使用vue,而且一開始使用的時候2.0出來一個月不到,很多坑都是自己去踩的,現在項目要上線了,所以記錄一些過程
    2017-01-01
  • Vue.Js中的$watch()方法總結

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

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

    vue自定義指令實現元素滑動移動端適配及邊界處理

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

    前端架構vue架構插槽slot使用教程

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

    vue使用echarts實現中國地圖和點擊省份進行查看功能

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

    Vue編譯器解析compile源碼解析

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

最新評論