vue中的监听器

1. 什么是 watch 侦听器

watch 侦听器允许开发者监视数据的变化,从而针对数据的变化做特定的操作。
语法格式如下:
// 所有的侦听器,都应该被定义到 watch 节点下
watch: {
  // 侦听器本质上是一个函数,要监视哪个数据的变化,就把数据名作为方法名即可
  // 新值在前,旧值在后
  username(newVal,oldVal) {
    console.log(result,oldVal)
  }
}

2.immediate 选项

默认情况下,组件在初次加载完毕后不会调用 watch 侦听器。如果想让 watch 侦听器立即被调用,则需要使 用 immediate 选项。示例代码如下:
watch: {
username: {
// handler 是固定写法,表示当 username 的值变化时,自动调用 handler 处理函数
handler: async function (newVal) {
if (newVal === '') return
const { data: res } = await axios.get('https://www.escook.cn/api/finduser/' + newVal)
console.log(res)
},
// 表示页面初次渲染好之后,就立即触发当前的 watch 侦听器
immediate: true
} }

3.deep 选项

如果 watch 侦听的是一个对象,如果对象中的属性值发生了变化,则无法被监听到。此时需要使用 deep 选 项,代码示例如下:
 watch: {
    info: {
       handler(newVal) {
           console.log(newVal)
       },
          // 开启深度监听,只要对象中任何一个属性变化了,都会触发“对象的侦听器”
       deep: true
    }
} 

4.监听对象单个属性的变化

如果只想监听对象中单个属性的变化,则可以按照如下的方式定义 watch 侦听器:
 watch: {
        // 如果要侦听的是对象的子属性的变化,则必须包裹一层单引号
        'info.username'(newVal) {
          console.log(newVal)
        }
      }

### 实现监听事件以控制 Dialog 弹窗 为了实现在 Vue3 中通过监听页面活动来控制 `CustomDialog` 的显示,可以采用如下方法: #### 定义并注册自定义对话框组件 首先,在项目中引入或创建名为 `CustomDialog` 的组件,并按照标准流程完成其注册[^1]。 ```javascript // main.js 或 setup 文件内 import { createApp } from 'vue'; import App from './App.vue'; import CustomDialog from './components/CustomDialog.vue'; const app = createApp(App); app.component('custom-dialog', CustomDialog); // 注册全局组件 ``` #### 设置定时器与监听用户交互 接着,在应用入口文件或其他合适位置初始化一个计时器用于检测不活跃状态。当达到设定时间间隔(例如三分钟)后触发弹窗逻辑;同时为文档对象添加鼠标移动、键盘按键等类型的事件处理器以便及时重置计数器[^2]。 ```javascript let idleTimer; function startIdleMonitor() { resetIdle(); document.addEventListener('mousemove', resetIdle, false); document.addEventListener('keypress', resetIdle, false); function showVerificationPopup() { const customDialogInstance = new CustomDialog(); // 假设这是实例化方式 customDialogInstance.show(); // 显示弹窗的方法调用 } function resetIdle() { clearTimeout(idleTimer); idleTimer = setTimeout(showVerificationPopup, 3 * 60 * 1000); // 设定超时时长为3分钟 } } startIdleMonitor(); ``` 上述代码片段展示了如何利用 JavaScript 的原生特性配合 Vue 组件生命周期管理机制实现所需功能。需要注意的是实际开发过程中可能还需要考虑更多细节处理如跨浏览器兼容性等问题。 #### 使用 ECharts 进行数据可视化 (扩展阅读) 虽然此部分并非直接关联到当前需求,但在某些场景下开发者可能会希望结合图表库展示更多信息给最终用户。对于这种情况下的父子组件间通信问题,则可以通过 props 和 emit 来传递必要的参数和回调函数[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值