基本用法:
<template>
<div>
name: {{obj.name}}
<br>
list:
<ul>
<li v-for="(item, index) in obj.list" :key="index"> {{item}} </li>
</ul>
<hr>
<button @click="changeName">改变name</button>
<button @click="changeList">改变list</button>
</div>
</template>
<script lang="ts">
import {defineComponent, reactive, watch} from 'vue';
export default defineComponent({
setup () {
let obj = reactive({
name: '1111',
list: ['222', '222222', '222222']
})
function changeName () {
obj.name += '+'
}
function changeList () {
obj.list[0] += '+'
}
watch(obj, () => {
console.log(obj.name)
}, {
// 页面加载会先执行一次
immediate: true
})
return {
obj,
changeName,
changeList
}
}
})
</script>
<style scoped>
</style>
监听多个数据源:
<template>
<div>
age: {{obj1.age}}<br>
name: {{obj.name}}
<br>
list:
<ul>
<li v-for="(item, index) in obj.list" :key="index"> {{item}} </li>
</ul>
<hr>
<button @click="changeName">改变name</button>
<button @click="changeList">改变list</button>
<button @click="changeAge">改变age</button>
</div>
</template>
<script lang="ts">
import {defineComponent, reactive, watch} from 'vue';
export default defineComponent({
setup () {
let obj = reactive({
name: '1111',
list: ['222', '222222', '222222']
})
let obj1 = reactive({
age: 18
})
function changeName () {
obj.name += '+'
}
function changeList () {
obj.list[0] += '+'
}
function changeAge () {
obj1.age++
}
watch([obj, obj1], () => {
console.log(obj.name)
}, {
// 页面加载会先执行一次
immediate: true
})
return {
obj,
changeName,
changeList,
changeAge,
obj1
}
}
})
</script>
<style scoped>
</style>
本文介绍了Vue3中watch的使用,包括基本的监听数据变化、监听多个数据源的方法,帮助开发者理解如何在Vue3组件中实现响应式的数据监控。
750

被折叠的 条评论
为什么被折叠?



