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

Vue中的methods、computed計算屬性和watch監(jiān)聽屬性的使用和區(qū)別解析

 更新時間:2024年01月02日 10:34:07   作者:菜鳥小牟  
這篇文章主要介紹了Vue中的methods、computed計算屬性和watch監(jiān)聽屬性的使用和區(qū)別,本文通過示例代碼給大家介紹的非常詳細對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

前言

該篇介紹一下Vue中的methods、computed和watch的使用和區(qū)別`

提示:以下是本篇文章正文內容,下面案例可供參考

一、methods屬性

介紹:
1.methods中的函數(方法)也是暴露到Vue實例對象(vm)上
2.作用:處理業(yè)務邏輯

1.無參的函數

關鍵代碼如下(示例):

<div id="App">
        <h1>n的值為:{{ n }}</h1>
        <button @click="add">按鈕</button>
        <!-- add 也可以寫成 add() -->
</div>
-----------------------------------------------------
data: {
    n: 1
},
methods: {
    add(e){
    	// console.log(e) 這里的第一個形參e 是事件對象
        this.n++
    }
},     

2.有參的函數

關鍵代碼如下(示例):

<div id="App">
        <h1>n的值為:{{ n }}</h1>
        <button @click="add(5)">點我加5</button>
        <button @click="add(10)">點我加10</button>
</div>
------------------------------------------------------
data: {
    n: 1
},
methods: {
    add(x){
    	// 但這種情況下,我們拿不到 事件對象e 了
    	// 但是,在模板傳參的過程中,我們可以通過$event將事件對象傳入
        this.n += x
    }
},

提示:如果想詳細了解$event的使用,請移步到我的另一篇文章

二、computed屬性

介紹:
1.computed中的屬性是基于現(xiàn)有數據(響應式依賴)計算出來的新屬性,也是暴露在Vue實例對象(vm)上
2.計算屬性有兩種寫法:函數式(常用的);對象式
3.原理:底層借助了Object.defineProperty提供的gettersetter

1.函數式

默認寫法:可讀不可改(有getter無setter)

代碼如下(示例):

data: {
    firstName: '張',
    lastName: '三',
}
--------------------------------------------------------
computed: {
    // 簡寫 函數式(只讀不可寫,默認寫法)    只有getter 無setter
    fullName() {
        return this.firstName + this.lastName
    }
}

2.對象式

完整寫法:可讀可改(有getter有setter)

代碼如下(示例):

data: {
    firstName: '張',
    lastName: '三',
}
------------------------------------------------------------
computed: {
    // 完整寫法 對象式(可讀可改)    有getter和setter
    fullName:{
        get(){
            return this.firstName + this.lastName
        },
        set(value){
            const arr = value.split('-')
            this.firstName = arr[0]
            this.lastName = arr[1]
        }
    }
}

注意: 1.一般情況下采取函數式寫法 2.如果計算屬性要被手動修改,那必須采取對象式寫set函數去響應修改,且set中要引起計算時依賴的數據發(fā)生改變(這樣可實現(xiàn)數據雙向綁定)

三、watch屬性

介紹:
1.監(jiān)視數據變化,然后執(zhí)行一些業(yè)務邏輯異步操作
2.監(jiān)聽屬性有3個配置項:①immediate ②deep ③handler函數
3.監(jiān)聽屬性有兩種寫法:對象式(完整寫法);函數式(簡寫)

1.對象式

完整寫法

watch: {
    // 完整寫法 對象式
    lastName:{
        immediate: true,    // 初始化時,先調用一次handler函數
        deep: true,         // 深度監(jiān)聽,可監(jiān)聽多層對象
        handler(newValue,oldValue){
            console.log(newValue,oldValue)
        }
    }
}

2.函數式

簡寫:當不需要①②配置項時可簡寫

watch: {
    // 簡寫 函數式        當不需要 immediate: true,deep: true,時
    lastName(newValue, oldValue){
        console.log(newValue, oldValue)
    }
}

注意: 需要根據具體情況具體分析采取哪種方式

四 、區(qū)別

提示:這也是比較常見的面試題
給大家一個小tip:在我們回答面試題時,思維邏輯一定要清晰,而不是想到啥答啥
拿這個問題舉例:我們可以從兩個角度出發(fā)回答問題(具體問題具體分析角度)
1.本職工作(主要應用場景)
2.當二者能實現(xiàn)同一功能時,誰更有優(yōu)勢

1.計算屬性和方法

(1)本職工作不同:
計算屬性是基于現(xiàn)有數據(響應式依賴)計算出來的新屬性,它本質也還是一個屬性,和data里的數據應用場景一樣,主要應用在模板,一些業(yè)務邏輯中數據的處理。
方法的主要應用是處理一些業(yè)務邏輯
(2)當二者能實現(xiàn)同一功能時,應該采用computed
因為computed計算屬性內部有緩存機制,可復用,效率更高,調試更方便

2.computed計算屬性和watch監(jiān)聽屬性

(1)本職工作不同:
computed計算屬性本質還是一個屬性,當我們有一些數據需要隨著其它數據(響應式依賴)變動而變動時,此時使用computed
②當數據變化時,我們需要執(zhí)行一些業(yè)務邏輯異步操作,此時使用watch
(2)當二者能實現(xiàn)同一功能時,應該采用computed
因為computed計算屬性內部有緩存機制,可復用,效率更高,調試更方便

有人可能會疑惑為什么這兩個問題的第一條第一點不是完全一樣的???
因為具體問題具體分析。當我拿到這個問題時,我已經將它們進行了對比,所以說在回答的時候,是相對比另一個來說的,是有針對性分析的,而不是再回答一些無關緊要的內容。

到此這篇關于Vue中的methods、computed計算屬性和watch監(jiān)聽屬性的使用和區(qū)別的文章就介紹到這了,更多相關Vue計算屬性和watch監(jiān)聽屬性內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Vue?和?Django?實現(xiàn)?Token?身份驗證的流程

    Vue?和?Django?實現(xiàn)?Token?身份驗證的流程

    這篇文章主要介紹了Vue?和?Django?實現(xiàn)?Token?身份驗證?,Vue.js?和?Django?編寫的前后端項目中,實現(xiàn)了基于?Token?的身份驗證機制,其他前后端框架的?Token?實現(xiàn)原理與本文一致,需要的朋友可以參考下
    2022-08-08
  • vue設置頁面背景及背景圖片簡單示例

    vue設置頁面背景及背景圖片簡單示例

    這篇文章主要給大家介紹了關于vue設置頁面背景及背景圖片的相關資料,在Vue項目開發(fā)中我們經常要向頁面中添加背景圖片,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2023-08-08
  • Vue概念及常見命令介紹(1)

    Vue概念及常見命令介紹(1)

    這篇文章主要為大家詳細介紹了Vue概念及常見命令,介紹了vue.js聲明式渲染、雙向綁定及常用指令,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 解決vue頁面渲染但dom沒渲染的操作

    解決vue頁面渲染但dom沒渲染的操作

    這篇文章主要介紹了解決vue頁面渲染但dom沒渲染的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 如何使用Vue的思想封裝一個Storage

    如何使用Vue的思想封裝一個Storage

    作為Web Storage API的接口,Storage 提供了訪問特定域名下的會話存儲或本地存儲的功能,例如可以添加、修改或刪除存儲的數據項,這篇文章主要給大家介紹了關于如何使用Vue的思想封裝一個Storage的相關資料,需要的朋友可以參考下
    2021-08-08
  • Vue3的7種種組件通信詳情

    Vue3的7種種組件通信詳情

    Vue3兼容大部分Vue2的特性,用Vue2代碼開發(fā)Vue3都可以,性能上面打包大小減少 41%,初次渲染快 55%,更新快 133%,內存使用減少 54%,本篇文章主要介紹Vue3的7種種組件通信,需要的朋友可以參考下面文章的具體內容
    2021-09-09
  • Vue+Element一步步實現(xiàn)動態(tài)添加Input_輸入框案例

    Vue+Element一步步實現(xiàn)動態(tài)添加Input_輸入框案例

    這篇文章主要介紹了Vue+Element一步步實現(xiàn)動態(tài)添加Input_輸入框案例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Vue Mixins混入介紹與使用

    Vue Mixins混入介紹與使用

    如果我們在每個組件中去重復定義這些屬性和方法會使得項目出現(xiàn)代碼冗余并提高了維護難度,針對這種情況官方提供了Mixins特性,這時使用Vue mixins混入有很大好處,下面就介紹下Vue mixins混入使用方法,需要的朋友參考下吧
    2023-02-02
  • vue 實現(xiàn)基礎組件的自動化全局注冊

    vue 實現(xiàn)基礎組件的自動化全局注冊

    這篇文章主要介紹了vue 實現(xiàn)基礎組件的自動化全局注冊的方法,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2020-12-12
  • Vue項目中引入ECharts的教程詳解

    Vue項目中引入ECharts的教程詳解

    ECharts是一個強大的畫圖插件,在vue項目中,我們常??梢砸肊charts來完成完成一些圖表的繪制,本文就來和大家介紹一下如何在Vue項目中引入ECharts吧
    2023-03-03

最新評論