我怎样才能在composition api 中观看一个prop?

Pos*_*oko 11 vue.js vue-props vuejs3 vue-composition-api

当 prop 更新时如何调用函数?

父容器:

<div>     
  <Maintable :type="typeRef" :country="countryRef" />
</div>
Run Code Online (Sandbox Code Playgroud)

子容器:

    export default{

    props: ['type'],
    
    setup(props)
    {   
        watch(props.type, () => {
            console.log('hello')
        })
    }
Run Code Online (Sandbox Code Playgroud)

此代码收到错误:无效的监视源...我如何侦听道具的更新?

希望有人可以帮助我!:-)

Bou*_*him 29

尝试从函数返回 prop 作为第一个参数:

    export default{

    props: ['type'],
    
    setup(props)
    {   
        watch(()=>props.type, (newVal) => {
            console.log('hello')
        })
    }
Run Code Online (Sandbox Code Playgroud)

而不是watch(props.typedo watch(()=>props.type,因为()=>props.type是一个返回 prop 的箭头函数,它是 watcher 属性的参数。

笔记 :

如果你想观察一个对象的属性,你应该使用 getter,但如果你想观察整个对象或反应式基元变量,则直接将其作为第一个参数传递并添加deep:true选项