侦听器
侦听器(Watcher)是 ofa.js 中用于监听数据变化并执行相应逻辑的功能。当响应式数据发生变化时,侦听器会自动触发回调函数,允许你执行诸如数据转换、副作用操作或异步处理等任务。
基本用法
侦听器定义在组件的 watch 对象中,其中键名对应需要监听的数据属性名,值是当数据变化时执行的回调函数。
count:{{count}}
doubleCount:{{doubleCount}}
回调函数参数
侦听器回调函数接收两个参数:
newValue:变化后的新值{watchers}:当前组件的所有侦听器对象
数据变更后会先进行防抖处理,再执行 watch 中的回调;watchers 参数即为本次防抖周期内所有被合并的变更集合。
watch 中的函数会在组件初始化完成后立即被调用,用于建立数据监听。可通过判断 watchers 是否有长度来区分是否为首次调用。
名字: {{name}}
年龄: {{age}}
{{log}}
深度侦听
对于对象或数组类型的嵌套数据,watch 内会自动进行深度监听。
用户信息:
姓名: {{user.name}}
年龄: {{user.age}}
爱好: {{user.hobbies.join(', ')}}
监听多个数据源
你可以同时监听多个数据的变化,并在回调函数中根据多个数据的变化执行相应的逻辑。
宽度: {{rectWidth}}
高度: {{rectHeight}}
面积: {{area}}
实际应用场景
1. 表单验证
{{usernameError}}
{{emailError}}
2. 设置主题
设置: {{settings.theme}}
保存状态: {{saveStatus}}
注意事项
- 避免修改监听的数据:在侦听器回调中修改被监听的数据可能导致无限循环。如需修改,请确保有适当的条件判断。
- 可改用计算属性:如需根据多个数据的变化计算新值,建议使用计算属性而非侦听器。