为了账号安全,请及时绑定邮箱和手机立即绑定

有没有童鞋遇到过同样的问题:vue中如何正确的使用watch?求指导!

有没有童鞋遇到过同样的问题:vue中如何正确的使用watch?求指导!

子衿沉夜 2019-10-10 17:13:44
在组件传参的时候使用Object.assign,子组件使用watch监听传递过来的参数,参数变化时执行相应事件,并设置了immediate:true,但是现在在页面初次加载的时候事件会执行两次,不知道是什么导致的。//父组件data(){return{params:{a:2b:1}}}//子组件watch:{'params':{handler(){this.getData()//这里执行了两次},deep:true,immediate:true}}解决办法是设置immediate:false但是不知道为什么会导致第一次执行两次
查看完整描述

2 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

immediate:true立即执行了一次watchhandler
随后又触发了一次render,render里会执行Object.assign(),而Object.assign()生成的是一个新对象(地址不一样),watch检测到了改变,所以watchhandler又执行了一次
以上就触发了两次watchhandler。
                            
查看完整回答
反对 回复 2019-10-10
  • 2 回答
  • 0 关注
  • 378 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信