vue3如何监听 props 的变化?

发布时间 2023-09-05 17:59:13作者: 蓓蕾心晴

背景

实际开发过程中,当需要通过 watch 监听传入的 props 的某个值的变化,来动态改变组件内部的样式,实现方式如下:

export default {
  name: 'countdown',
  props: {
    showBox: {
      type: Boolean,
      required: true,
      default: false
    },
  },
  setup (props, { emit }) {
   // !!!此种方式不可监听到变化
    const showBox2 = toRef(props.showBox)
    watch(showBox2, (val) => {
      if (val) {
        // startCountdown()
      } else {
         // clearCountdown()
      }
    })
    // 下面方式可以监听到值改变
    watch(() => props.showBox, (val) => {
      if (val) {
        // startCountdown()
      } else {
        // clearCountdown()
      }
    })
  }
}