V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
W1angMh
V2EX  ›  Vue.js

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

  •  
  •   W1angMh · 2019-07-19 11:46:30 +08:00 · 5315 次点击
    这是一个创建于 1972 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 类型)

    9 条回复    2019-07-19 17:29:46 +08:00
    Hoshinokozo
        1
    Hoshinokozo  
       2019-07-19 12:00:55 +08:00
    deep:true
    Hoshinokozo
        2
    Hoshinokozo  
       2019-07-19 12:01:21 +08:00
    @Hoshinokozo 打错了,是 immediate:true
    W1angMh
        3
    W1angMh  
    OP
       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
        4
    redbuck  
       2019-07-19 16:05:54 +08:00
    还可以手动添加监视,比声明式灵活
    wxsm
        5
    wxsm  
       2019-07-19 16:16:31 +08:00
    百度半天都不看文档系列,看文档 2 分钟解决
    W1angMh
        6
    W1angMh  
    OP
       2019-07-19 16:28:01 +08:00
    @wxsm 是的 下次应该先看 vue 的文档
    doing1
        7
    doing1  
       2019-07-19 16:36:09 +08:00
    不错哇,佩服,学习了
    shenyu1996
        8
    shenyu1996  
       2019-07-19 17:04:01 +08:00
    这样啊 第一次我都是直接在 mounted 处理的
    W1angMh
        9
    W1angMh  
    OP
       2019-07-19 17:29:46 +08:00
    我的本职是后端开发,因为业务需要,临时做一下前端,这个还是问了部门其他组的前端才改过来的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2663 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 00:32 · PVG 08:32 · LAX 16:32 · JFK 19:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.