请问为什么 vue watch 第一次传值不触发其中的方法?

2019-07-19 11:46:30 +08:00
 W1angMh

props: ['flowData'], watch: { flowData:function(newVal, oldVal){ console.log("这是前面传来的 props 值: " + newVal + ",原来的值是: " + oldVal); this.showFlowChart(newVal); } } 有如上代码,props 是父组件传来的值,watch 监听 props 中'flowData'值的改变,一旦'flowData'中的值发生改变,那么就触发 showFlowChart()方法。 我遇到的问题是:页面刷新后,父组件第一次传值 watch 不触发( flowData 百分之百传过来了),求助应该怎么解决,百度看了好半天都没找到合适的解决方法( flowData 是一个 String 类型)

5170 次点击
所在节点    Vue.js
9 条回复
Hoshinokozo
2019-07-19 12:00:55 +08:00
deep:true
Hoshinokozo
2019-07-19 12:01:21 +08:00
@Hoshinokozo 打错了,是 immediate:true
W1angMh
2019-07-19 13:38:26 +08:00
@Hoshinokozo 谢谢,之前试过 immediate,但是使用方式好像不对,我改成如下代码后解决了我的问题
watch: {
"flowData":{
immediate: true,
handler:function(newVal, oldVal){
console.log("这是前面传来的 props 值: " + newVal + ",原来的值是: " + oldVal);
this.showFlowChart(newVal);
}
}
},
redbuck
2019-07-19 16:05:54 +08:00
还可以手动添加监视,比声明式灵活
wxsm
2019-07-19 16:16:31 +08:00
百度半天都不看文档系列,看文档 2 分钟解决
W1angMh
2019-07-19 16:28:01 +08:00
@wxsm 是的 下次应该先看 vue 的文档
doing1
2019-07-19 16:36:09 +08:00
不错哇,佩服,学习了
shenyu1996
2019-07-19 17:04:01 +08:00
这样啊 第一次我都是直接在 mounted 处理的
W1angMh
2019-07-19 17:29:46 +08:00
我的本职是后端开发,因为业务需要,临时做一下前端,这个还是问了部门其他组的前端才改过来的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/584355

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX