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

淺析vue3響應(yīng)式數(shù)據(jù)與watch屬性

 更新時間:2022年05月24日 08:58:05   作者:鵬程933  
這篇文章主要介紹了vue3響應(yīng)式數(shù)據(jù)與watch屬性的相關(guān)知識,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
  1. 是Vue3的 composition API中2個最重要的響應(yīng)式API
  2. ref用來處理基本類型數(shù)據(jù), reactive用來處理對象(遞歸深度響應(yīng)式)
  3. 如果用ref對象/數(shù)組, 內(nèi)部會自動將對象/數(shù)組轉(zhuǎn)換為reactive的代理對象
  4. ref內(nèi)部: 通過給value屬性添加getter/setter來實現(xiàn)對數(shù)據(jù)的劫持
  5. reactive內(nèi)部: 通過使用Proxy來實現(xiàn)對對象內(nèi)部所有數(shù)據(jù)的劫持, 并通過Reflect操作對象內(nèi)部數(shù)據(jù)
  6. ref的數(shù)據(jù)操作: 在js中要.value, 在模板中不需要(內(nèi)部解析模板時會自動添加.value)
<template>
  <div>ref與</div>
  <div>msg1:{{msg1}}</div>
  <div>msg2:{{msg2}}</div>
  <div>msg3:{{msg3}}</div>
  <button @click="updata">改變</button>
</template>

<script lang="ts">
import {reactive, ref} from "vue";
export default {
  setup(){
    const msg1=ref('hello')
    const msg2 = reactive({
      name: 'jack',
      wife: {
        name:'rose'
      }
    })
    const msg3 = ref({ // ref中如果是一個對象,那么經(jīng)過了reactive處理,形成了Proxy對象
      name: 'jack',
      wife: {
        name: 'rose'
      }
    })
    function updata(){
      msg1.value += '++'
      msg2.wife.name += '++'
      msg3.value.wife.name += '++'
    }
    return {
      msg1,
      msg2,
      msg3,
      updata
    }
  }
}
</script>

計算屬性與監(jiān)視

computed函數(shù):

  • 與computed配置功能一致
  • 有g(shù)etter/setter

與watch配置功能一致

  • 監(jiān)視指定的一個或多個響應(yīng)式數(shù)據(jù), 一旦數(shù)據(jù)變化, 就自動執(zhí)行監(jiān)視回調(diào)
  • 默認(rèn)初始時不執(zhí)行回調(diào), 但可以通過配置immediate為true, 來指定初始時立即執(zhí)行第一次
  • 通過配置deep為true, 來指定深度監(jiān)視

watchEffect函數(shù)

  • 不用直接指定要監(jiān)視的數(shù)據(jù), 回調(diào)函數(shù)中使用的哪些響應(yīng)式數(shù)據(jù)就監(jiān)視哪些響應(yīng)式數(shù)據(jù)
  • 默認(rèn)初始時就會執(zhí)行第一次, 從而可以收集需要監(jiān)視的數(shù)據(jù)
  • 監(jiān)視數(shù)據(jù)發(fā)生變化時回調(diào)
<template>
  <h1>計算屬性與監(jiān)視</h1>
  <fieldset>
    <legend>姓名操作</legend>
    姓氏:<input type="text" placeholder="輸入姓氏" v-model="user.firstName"><br>
    名字:<input type="text" placeholder="輸入名字" v-model="user.lastName">
  </fieldset>
  <fieldset>
    <legend>計算屬性和監(jiān)視</legend>
    姓名:<input type="text" placeholder="顯示姓名" v-model="fullName1"><br>
    姓名:<input type="text" placeholder="顯示姓名" v-model="fullName2"><br>
    姓名:<input type="text" placeholder="顯示姓名" v-model="fullName3"><br>
  </fieldset>
</template>

<script lang="ts">
import {reactive, ref, computed, watch, watchEffect} from "vue";
export default {
  setup() {
    const user=reactive({
      firstName:'東方',
      lastName: '不敗'
    })
    /*
    * Vue3中的計算屬性
    * 計算屬性如果只傳入一個回調(diào)函數(shù),那么表示get
    * 返回的是一個ref對象
    * */
    const fullName1=computed(()=>{
      return user.firstName + '-' + user.lastName
    })
    const fullName2=computed({
      get(){
        return user.firstName + '-' + user.lastName
      },
      set(val){
        const name=val.split('-')
        user.firstName=name[0]
        user.lastName=name[1]
      }
    })
    // 監(jiān)視屬性
    let fullName3=ref('')
    watch(user,({firstName,lastName})=>{ // user里面對象解構(gòu)賦值
      fullName3.value=firstName + '-' +lastName
    },{immediate:true}) // immediate 開始時執(zhí)行一次 還可以加deep 深度監(jiān)視
    // watchEffect(()=>{
    //   fullName3.value=user.firstName + '-' +user.lastName
    // }) // 更智能,開始就自動執(zhí)行一次

    /*
    * wathc可以監(jiān)視多個屬性,監(jiān)聽非響應(yīng)式數(shù)據(jù)時,需要()=>
    * */
    watch([()=>user.firstName,()=>user.lastName],()=>{
      console.log("watch執(zhí)行了")
    })
    return {
      user,
      fullName1,
      fullName2,
      fullName3
    }
  }
}
</script>

到此這篇關(guān)于vue3響應(yīng)式數(shù)據(jù)與watch屬性的文章就介紹到這了,更多相關(guān)vue3 watch屬性內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue3 Props沒有默認(rèn)值但報錯的解決方案

    Vue3 Props沒有默認(rèn)值但報錯的解決方案

    這篇文章主要介紹了Vue3 Props沒有默認(rèn)值但報錯的解決方案,文中通過代碼示例給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-04-04
  • vue3+electron12+dll開發(fā)客戶端配置詳解

    vue3+electron12+dll開發(fā)客戶端配置詳解

    本文將結(jié)合實例代碼,介紹vue3+electron12+dll客戶端配置,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • Vue computed計算屬性詳細(xì)講解

    Vue computed計算屬性詳細(xì)講解

    computed是vue的配置選項,它的值是一個對象,其中可定義多個計算屬性,每個計算屬性就是一個函數(shù),下面這篇文章主要給大家介紹了關(guān)于vue中計算屬性computed的詳細(xì)講解,需要的朋友可以參考下
    2022-10-10
  • .vue文件編譯成瀏覽器可執(zhí)行文件的流程詳解

    .vue文件編譯成瀏覽器可執(zhí)行文件的流程詳解

    這篇文章主要給大家介紹了.vue?文件是如何編譯成瀏覽器可執(zhí)行的文件,文中通過代碼示例將編譯流程介紹的非常詳細(xì),對我們的學(xué)習(xí)或工作有一定的價值,感興趣的同學(xué)可以參考閱讀下
    2023-09-09
  • vue 內(nèi)聯(lián)樣式style中的background用法說明

    vue 內(nèi)聯(lián)樣式style中的background用法說明

    這篇文章主要介紹了vue 內(nèi)聯(lián)樣式style中的background用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 公共Hooks封裝文件下載useDownloadFile實例詳解

    公共Hooks封裝文件下載useDownloadFile實例詳解

    這篇文章主要為大家介紹了公共Hooks封裝文件下載useDownloadFile實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 如何手寫簡易的 Vue Router

    如何手寫簡易的 Vue Router

    這篇文章主要介紹了如何手寫簡易的 Vue Router,幫助大家更好的理解和使用vue,感興趣的朋友可以了解下
    2020-10-10
  • 小白教程|一小時上手最流行的前端框架vue(推薦)

    小白教程|一小時上手最流行的前端框架vue(推薦)

    這篇文章主要介紹了前端框架vue,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • vue 使用 v-model 雙向綁定父子組件的值遇見的問題及解決方案

    vue 使用 v-model 雙向綁定父子組件的值遇見的問題及解決方案

    這篇文章主要介紹了vue 使用 v-model 雙向綁定父子組件的值遇見的問題及解決方案,幫助大家更好的理解和學(xué)習(xí)使用vue框架,感興趣的朋友可以了解下
    2021-03-03
  • 基于腳手架創(chuàng)建Vue項目實現(xiàn)步驟詳解

    基于腳手架創(chuàng)建Vue項目實現(xiàn)步驟詳解

    這篇文章主要介紹了基于腳手架創(chuàng)建Vue項目實現(xiàn)步驟詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08

最新評論

昌宁县| 南陵县| 九江市| 黎城县| 南昌市| 辉县市| 东安县| 理塘县| 香港| 永年县| 隆化县| 芜湖市| 博客| 永川市| 若尔盖县| 时尚| 泽普县| 广水市| 巴里| 栖霞市| 睢宁县| 纳雍县| 南丰县| 太仆寺旗| 夏河县| 洪泽县| 雷山县| 泗洪县| 曲水县| 密云县| 玉环县| 高青县| 崇左市| 河津市| 淮阳县| 安顺市| 舟曲县| 旅游| 苏州市| 南京市| 江都市|