问题记录:Vue3的watch,如何做到在监听值没变化的情况下调用相关函数去请求接口?
在Vue 3中,你可以使用watch
来监听一个响应式属性的变化,并执行相关的函数。如果你想在值没有变化的情况下调用函数去请求接口,你可以使用watch
的immediate
选项来在监听开始时立即执行回调。
以下是一个简单的例子:
<template>
<div>
<input v-model="myData" />
</div>
</template>
<script setup>
import { ref, watch } from 'vue';
const myData = ref('');
// 请求接口的函数
const fetchData = async () => {
try {
const response = await fetch('api/data');
const data = await response.json();
console.log(data);
} catch (error) {
console.error('Error fetching data:', error);
}
};
// 监听myData变化,无论变化与否都会执行fetchData
watch(myData, async (newValue, oldValue) => {
await fetchData();
}, {
immediate: true // 组件装载时立即执行
});
</script>
在这个例子中,无论myData
的值是否变化,fetchData
函数都会在组件装载时执行一次。如果你只想在myData
的值变化后执行fetchData
,你可以移除immediate
选项或者将其设置为false
。
评论已关闭