Vue3 watch 函数监听子组件 props 的变化

发布时间 2023-06-24 01:26:24作者: Himmelbleu

在 Vue3 中,想要监听子组件的 props 变化需要将其先转换为 Ref 类型的值才可以监听。虽然 props 可能是由父组件传递过来的响应式数据,但 props 不是一个响应式的数据。

如下所示:

const props = defineProps({
  strHtml: {
    type: String,
    required: true
  },
  config: {
    type: Object,
    required: false
  }
});

const toRefStrHtml = toRef(props, "strHtml");

watch(toRefStrHtml, () => {
  // ......
})

只有这样,watch 才可以监听到这个 prop 的变化。如果使用 onUpdated 可能会因为任何一个数据改变而执行,watch 函数可以精准的捕捉到哪一个变化,因为它是单一的嘛。

toRef 这个函数我在这个博文中也有一些思考:Vue reactive 解构赋值丢失响应式,toRef 维持响应式。这也是 toRef 函数的一个用处之一。