Vue3中使用setup监听props

Vue3中使用setup监听props,第1张

组件展示父组件传来的参数,展示的信息随着父组件上tab的切换动态更新。

一开始的想法是单独监听这个传递的参数,但看了VUE3的文档之后,似乎对参数的监听必须精确到属性。例如参数为

需要在子组件的watch中写明监听的是name还是gender。

该参数中有很多可能会改变的属性,一一监听过于麻烦。所以改变思路,使用监听props来获取所有所有传参。

在父组件中,用于传递给子组件的参数必须为响应式(eg reactive),否则子组件在监听时不会监测到变换,watch永远不会生效

immediate是立即开始监听,在页面首次渲染时可能为显示为undefined,如果watch的变化需要手动触发,不需要开启

deep默认开启,可以忽略(参数为reactive,会默认开启deep,如果是ref,则不会默认开启deep)

vue官网中规定, vue中的Prop是单向数据流

在vue中,组件中的Prop是单向绑定的,父组件的Prop的更新会向下流向到子组件中,但是反过来则不行。这样做是为了防止从子组件意外改变父组件的状态,从而导致应用的数据流向难以理解。

如果在子组件中改变父组件的某个Prop值,控制台会发出警告,但是在实际的实践中,我们还是会遇见需要改变父组件Prop的情况。

使用组件时,一开始绑定某Prop的值,在后续交互中,需要根据情况改变父组件中Prop的值,在这种场景下,我们要实现的是类似于数据双向绑定的功能,此时我们可以用到的方法有:

先说问题,父组件利用props向子组件传值,浏览器

console

有这个值,但是获取不到内部的属性,困了我3个小时,真的

personal

console

以下为原代码

1、homevue(父组件)--personal是被传的参数

<!--子组件-->

<form-picker

class="form-picker"

:personal="personal"

>

</form-picker>

export

default

{

data(){

return{

personal:{

state:'',////判断是修改状态,还是新增状态

add/edit

data:[]

}

}

},

mounted(){

this$apipersonalsearchPersonalInfo(thisuserInfouserId)then((res)=>{

thispersonaldata

=

resdatadata

//这里给personal对象赋值接口传来的数据

})

},

}

2、formPicker

(子组件)

--接收personal

export

default

{

props:['active','personal'],

mounted(){

consolelog(149,thispersonal)

consolelog(150,thispersonalstate)

}

}

运行结果

明明149行有

state

值,150行输出却没有了,是不是超级奇怪

后面经过大佬的讲解,其实浏览器consolelog也是应该没有的

所以,其实我们子组件一开始根本就没有取到这个personal这个对象。

3、解决方法--使用watch

父组件

export

default

{

data(){

return{

personal:{

state:'',////判断是修改状态,还是新增状态

add/edit

data:[]

}

}

},

mounted(){

this$apipersonalsearchPersonalInfo(thisuserInfouserId)then((res)=>{

//thispersonaldata

=

resdatadata

//这里给personal对象赋值接口传来的数据

//使用以下方法重新赋值,上面方法watch监听不到,具体什么原因,我也不清楚,知道的告知我!谢谢

thispersonal

=

{

data:

resdatadata,

state:

'edit'

}

})

},

}

接下来子组件就能

watch

personal

子组件

watch:{

personal(newValue,oldValue){

consolelog(181,newValue)

},

/

输出

{

data:

resdatadata,

state:

'edit'

}

/

}

总结

以上所述是小编给大家介绍的解决vue组件props传值对象获取不到的问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

您可能感兴趣的文章:vue20

子组件改变props值,并向父组件传值的方法详解vue父子组件间传值(props)vue之父子组件间通信实例讲解(props、$ref、$emit)vue组件中使用props传递数据的实例详解vue父组件向子组件(props)传递数据的方法vue父组件通过props如何向子组件传递方法详解详解vue2父组件传递props异步数据到子组件的问题

您是想问vue移动端怎么取角色值吗?您可以按照以下步骤进行:

1、定义一个角色变量,通常命名为role。

2、在vue组件中,通过props属性将角色值传递给组件。

3、使用computed属性定义一个角色计算属性,用于根据传递的角色值计算当前用户的角色。

4、根据计算属性的值,显示不同的内容或执行不同的 *** 作,来区分不同的用户角色。

原文链接 >

以上就是关于Vue3中使用setup监听props全部的内容,包括:Vue3中使用setup监听props、对vue的props实现双向数据流、解决vue组件props传值对象获取不到的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9707491.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存