在vue3的setup模式下,使用watch 函数侦听器id为box的div的宽高变换,单宽和高有变化时在控制台打印
时间: 2024-11-12 08:31:15 浏览: 5
vue侦听器watch精彩案例分享
在Vue 3的setup模式下,你可以使用`ref`来创建一个响应式的变量来存储`<div id="box">`的元素引用,并利用`watch`函数来监听它的宽和高的变化。下面是一个简单的示例:
```javascript
import { ref, watch } from 'vue';
// 创建一个ref来存储div的ref对象
const boxRef = ref(null);
// 使用setup生命周期钩子
setup() {
// 当boxRef发生变化时,会触发watch回调
watch(
() => boxRef.value,
(newBox) => {
if (newBox && newBox.clientWidth !== undefined && newBox.clientHeight !== undefined) {
// 当盒子宽度或高度发生变化时,在控制台打印
console.log(`Width changed: ${newBox.clientWidth}`);
console.log(`Height changed: ${newBox.clientHeight}`);
}
},
{
immediate: true, // 如果boxRef一开始就有值,立即执行回调
deep: false // 只监听直接属性的变化,如果元素样式等间接属性改变不会触发
}
);
return {
// 返回需要暴露给模板的变量,这里是boxRef供template使用
boxRef
};
}
<!-- 在模板中绑定boxRef -->
<div ref="box" @resize="handleResize"></div>
<script setup>
function handleResize() {
// 在这里可以将上面的watch回调替换为handleResize函数
}
</script>
```
在这个例子中,`@resize`事件会被传递到`handleResize`函数,然后在那里你可以检查元素的尺寸是否变化并打印信息。记得在实际项目中根据需求修改事件处理器。
阅读全文