在组件传参的时候使用Object.assign
,子组件使用watch
监听传递过来的参数,参数变化时执行相应事件,并设置了immediate:true
,但是现在在页面初次加载的时候事件会执行两次,不知道是什么导致的。
// 父组件
<new-line-charts
:_id="'singleStage'"
:text="`SINGLE STAGE`"
:url="'/xxx'"
:params="Object.assign({}, params, {'stageType': 'SINGLE'})"
:styles="styles"></new-line-charts>
data() {
return {
params: {
a: 2
b: 1
}
}
}
// 子组件
watch: {
'params': {
handler() {
this.getData() // 这里执行了两次
},
deep: true,
immediate: true
}
}
解决办法是设置immediate: false
但是不知道为什么会导致第一次执行两次
以上就触发了两次 watch handler。