亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue3中watch和watchEffect使用實例分析

發布時間:2022-08-10 17:27:46 來源:億速云 閱讀:189 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“vue3中watch和watchEffect使用實例分析”,內容詳細,步驟清晰,細節處理妥當,希望這篇“vue3中watch和watchEffect使用實例分析”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

    watch

    watch監聽單個數據

    <template>
        <input type="text" v-model="text1" />
    </template>
    
    <script setup>
    import { ref, watch } from 'vue'
    const text1 = ref('')
    
    watch(text1, (newVal, oldVal) => {
        console.log('監聽單個數據', newVal, oldVal)
    })
    </script>

    watch監聽多個數據

    <template>
        <input type="text" v-model="text1" />
        <input type="text" v-model="text2" />
    </template>
    
    <script setup>
    import { ref, watch } from 'vue'
    const text1 = ref('')
    const text2 = ref('')
    
    watch([text1, text2], (newVal, oldVal) => {
        console.log('監聽一組數據', newVal, oldVal)
    })
    </script>

    watch監聽對象

    <template>
        name: <input type="text" v-model="student.name" />
        age: <input type="number" v-model="student.age" />
    </template>
    <script setup>
    import { reactive, watch } from 'vue'
    const student = reactive({
        name: '',
        age: ''
    })
    watch(student, (newVal, oldVal) => {
        console.log('newVal', newVal)
        console.log('oldVal', newVal)
    })
    </script>

     watch還有第三個參數,deepimmediate,可以加上看看效果

    watch監聽對象的某一個值

    <template>
        name: <input type="text" v-model="student.name" />
        age: <input type="number" v-model="student.age" />
    </template>
    <script lang="ts" setup>
    import { reactive, watch } from 'vue'
    const student = reactive({
        name: '',
        age: ''
    })
    watch(() => student.name, (newVal, oldVal) => {
        console.log('newVal', newVal)
        console.log('oldVal', newVal)
    }, {
        deep: true,
        immediate: true
    })
    </script>

    監聽對象某一個屬性的時候需要用箭頭函數 

    watchEffect

    關于watchEffect,官網是這么介紹的:為了根據響應式狀態自動應用和重新應用副作用,我們可以使用watchEffect方法,它立即執行傳入的一個函數,同時響應式追蹤其依賴,并在其依賴變更時重新運行該函數。 也就是說,我們并不需要傳入一個特定的依賴源,而且它會立即執行一遍回調函數,如果函數產生了副作用,那它就會自動追蹤副作用的依賴關系,自動分析出響應源。光看概念可能比較模糊,先來看個最簡單的例子:

    <template>
        name: <input type="text" v-model="student.name" />
        age: <input type="number" v-model="student.age" />
    </template>
    
    <script lang="ts" setup>
    import { reactive, watchEffect } from 'vue'
    
    const student = reactive({
        name: '',
        age: ''
    })
    watchEffect(() => {
        console.log('name: ',student.name, 'age: ', student.age)
    })
    </script>

    watchEffect副作用

    副作用,那什么是副作用呢,其實很簡單,就是在監聽之前,我得做一件事。

    <template>
        name: <input type="text" v-model="student.name" />
        age: <input type="number" v-model="student.age" />
    
        <h3>{{student.name}}</h3>
    </template>
    
    <script lang="ts" setup>
    import { reactive, watchEffect } from 'vue'
    
    const student = reactive({
        name: '',
        age: ''
    })
    watchEffect((oninvalidate) => {
        oninvalidate(() => {
            student.name = '張三'
        })
        console.log('name: ', student.name)
    }, {
        // pre 組件更新前; sync:強制效果始終同步; post:組件更新后執行
        flush: 'post'  // dom加載完畢后執行
    })
    </script>

    監聽之前讓student.name賦值為'張三',無論你輸入什么值,name一直都是'張三'

    停止監聽

    我們用同步語句創建的監聽器,會自動綁定到組件實例上,并且會在組件卸載時自動停止,但是,如果我們在異步回調里創建一個監聽器,那它就不會綁定到當前組件上,必須手動去停止,防止內存泄漏。 那怎么去停止呢,其實我們只需要調用一下watchwatchEffect返回的函數

    const stop = watchEffect(() => {})
    
    // 停止監聽
    unwatch()

    區別

    用了一遍watchwatchEffect之后,發現他倆主要有以下幾點區別:

    • watch是惰性執行的,而watchEffect不是,不考慮watch第三個配置參數的情況下,watch在組件第一次執行的時候是不會執行的,只有在之后依賴項變化的時候再執行,而watchEffect是在程序執行到此處的時候就會立即執行,而后再響應其依賴變化執行。

    • watch需要傳遞監聽的對象,watchEffect不需要

    讀到這里,這篇“vue3中watch和watchEffect使用實例分析”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    鄂伦春自治旗| 潢川县| 临澧县| 武定县| 绍兴市| 沾化县| 孝昌县| 磐安县| 利辛县| 万荣县| 天等县| 磐石市| 乌恰县| 东至县| 名山县| 阜宁县| 财经| 姜堰市| 德保县| 贺兰县| 浦江县| 东兰县| 延寿县| 肥城市| 德州市| 莒南县| 新巴尔虎右旗| 石棉县| 翁源县| 宝鸡市| 腾冲县| 简阳市| 微山县| 新巴尔虎左旗| 新郑市| 襄汾县| 乐都县| 德州市| 娄烦县| 夹江县| 漳州市|