场镜
做一个复选框全选功能,复选框绑定一个checkedAll的ref,然后其他选项比较多,我使用了一个reactive,然后我监听checkedAll,循环更改其他复选框。
代码
const keyList = [
{ key: 'name', text: '姓名' },
{ key: 'age', text: '年龄' },
{ key: 'hobby', text: '爱好' },
]
watch(checkedAll, () => {
keyList.forEach((item) => {
checkData[item.key] = checkedAll
})
})
现象
全选功能没问题,点击全选之前,单独点击下面的选项,全选不受影响,但是点击过全选之后,也就是watch执行后,再点击下面的选项,全选也会受影响,然后就又执行watch了。
为什么执行过watch后,checkData的更改也被监听了呢?