vue3接收组件传值并用watch监听,监听到变化后执行函数

watch没有触发的原因是:

父组件传的变量要用ref创建一个响应式的变量,这样,传给子组件的是变化的值,子组件接收用toRefs保持响应式,用watch监听,这样就能触发,成功监听到变化。

1、父组件代码

父组件中的子组件标签上传递变量

   <Statistics title="近期测评统计" :startTime="startTime" :endTime="endTime"/>

const startTime = ref(null);

const endTime = ref(null);

function timeChange(val) {

    startTime.value = val[0];

    endTime.value = val[1];

....其余代码

}

2、Statistics 子组件接收 并watch监听

import {defineProps ,watch,toRefs } from "vue";

const props = defineProps({

  startTime:String,

  endTime:String,

})

const {startTime,endTime}=toRefs(props)

 

// 监控 startTime 和 endTime 的变化

watch([startTime,endTime], () => {

  getLineData();

});

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue中,可以通过props来向组件传递。在组件中,可以使用watch监听组件传递的props变化。但是在methods中直接获取props的是不可能的,因为props的是只读的,它们只能从组件中传递给组件,而无法在组件中修改。 Vue的props是单向数据流,组件传递给组件只能在组件中使用,而无法修改或更新。如果组件需要根据props的来进行一些操作或计算,可以在组件中使用watch来监测props的变化,并且在watch的回调函数中进行相应的操作。 例如: ```html <template> <div> <p>组件传递的:{{ propValue }}</p> </div> </template> <script> export default { props: ['propValue'], // 接收来自组件的propValue watch: { propValue: function(newVal, oldVal) { console.log('props的发生变化:', newVal); // 在这里进行相应的操作 } } } </script> ``` 在上述代码中,当组件传递的propValue发生变化时,watch会自动触发回调函数,并将新的参数(newVal)和旧的参数(oldVal)传递给回调函数。可以在回调函数中对propValue的进行相应的操作。 但是需要注意的是,如果你想在组件的methods中直接获取或修改props的,是不被允许的。如果你需要在组件中对props的进行操作,可以通过在组件中定义一个data属性,并将props的赋给data属性,然后在methods中对data进行操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值