vue3中子组件监听父组件传来的实时数据变化

文章介绍了在Vue3中如何使用watch和watchEffect来监听组件属性的变化,包括设置immediate和deep选项,以及它们在父子组件通信中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法一  watch监听

父组件

    //其中workOrder 是我们本次要监听的字段
      <listForm
        ref="listFormRef"
        v-if="listFormShow"
        @listData="listDataEvent"
        :workOrder="workOrderValue"
      />

 子组件

//引入watchEffect 
import {
  ref,
  watch,
} from "vue";

const props = defineProps({
  workOrder: ''
})

watch(()=>props.workOrder,(newValue,oldValue)=>{
	console.log('workOrder变化了',newValue,oldValue)
},{immediate:true,deep:true})

方法二  watchEffect方法

父组件

    //其中workOrder 是我们本次要监听的字段
      <listForm
        ref="listFormRef"
        v-if="listFormShow"
        @listData="listDataEvent"
        :workOrder="workOrderValue"
      />

子组件

//引入watchEffect 
import {
  ref,
  watchEffect,
} from "vue";

const props = defineProps({
  workOrder: ''
})

watchEffect(()=>{
    const x1 =  props.workOrder
    console.log(x1,'watchEffect配置的回调执行了')
})

vue3详细内容请看这个链接

https://blog.csdn.net/m0_58266149/article/details/129945094?spm=1001.2014.3001.5501

### Vue2 中子组件监听父组件的方法 在 Vue2 中,可以通过 `watch` 或者 `$emit` 的方式来实现在子组件监听父组件传递的变化。以下是具体的实现方式: #### 使用 `props` 和 `watch` 1. **通过 `props` 接收父组件数据** 首先,在子组件中定义一个接收父组件数据的属性,通常使用 `props` 来完成这一操作。 2. **利用 `watch` 实现监听功能** 在子组件内部可以使用 Vue 提供的 `watch` API 对接收到的 `prop` 属性进行监控,当其发生变化时执行相应的逻辑[^1]。 下面是一个完整的代码示例展示如何实现上述过程: ```javascript // 子组件 ChildComponent.vue <template> <div> <p>来自父组件的消息: {{ message }}</p> </div> </template> <script> export default { name: &#39;ChildComponent&#39;, props: [&#39;message&#39;], // 定义 prop 来接受父组件传递的 data() { return {}; }, watch: { message(newVal, oldVal) { console.log(`消息已更新:旧=${oldVal} -> 新=${newVal}`); this.handleMessageChange(newVal); // 调用方法处理新 } }, methods: { handleMessageChange(value) { console.log(&#39;正在处理新的消息:&#39;, value); // 可在此处添加额外逻辑 } } }; </script> ``` 在这个例子中,每当父组件中的 `message` 发生改变时,子组件都会触发对应的回调函数并打印日志到控制台。 #### 利用 `$emit` 进行双向绑定 (可选) 如果希望不仅能够监听父级变量的变化还能反过来影响它,则可以在子组件内调用 `$emit` 向上通知更改后的状态给父组件知道[^3]。不过这种方式更适用于表单输入控件之类的场景而非单纯只读型参数同步情况。 --- ### 总结 综上所述,在 Vue2 当中要让子组件去感知到来自于父亲节点所给予的信息变动有两种主要途径——借助观察器 (`watch`) 把握外部动态;或者构建起基于事件驱动机制下的交互链条 ($emit)。这两种手段各有千秋,具体选用哪一种取决于实际开发需求以及项目架构设计考量因素。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值