Vue3-watch和watchEffect

2022-07-02  本文已影响0人  江湖小盛

watch

watchEffect

<template>
  <div :style="{'textAlign': 'left', marginTop: '10px'}">
    {{ area.province }} -- {{ area .city}} <el-button @click="setArea">改变数据</el-button>
  </div>
</template>

<script setup>
import { reactive, watch, watchEffect } from 'vue';
const area = reactive({
  province: '广东',
  city: '深圳'
})

const setArea = () => {
  area.province = '湖南'
  area.city = '长沙'
}

// 监听引用类型中的一个属性
watch(
  () => area.province,
  (newVal, oldVal) => {
    console.log(newVal, oldVal)
  }
)

// 监听多个属性
watch(
  [() => area.province, () => area.city], 
  (newVal, oldVal) => {
    console.log(newVal, oldVal)
  }
)

// 立即监听和深度监听
watch([() => area.province, () => area.city], (newVal, oldVal) => {
  console.log(newVal, oldVal)
  },{
    immediate: true,
    deep: true
  }
)
// watchEffect 用到哪个属性就会监听哪个属性
watchEffect(() => {
  console.log(area.province, area.city)
})

// 监听父组件传过来的id
watch(() => props.id, (newVal) => {
  if (!newVal) return
  searchData()
})
</script>

上一篇 下一篇

猜你喜欢

热点阅读