vue 子组件接收父组件的props,使用emit给父组件之后如何在传递给子组件
//父组件
<device-topo
:superGw='superGw'
:node-show='changeChildData'>
</device-topo>
changeChildData(type, action, index){
this.superGw.expandDevChild = !this.superGw.expandDevChild
console.log(this.superGw.expandDevChild)//这里打印出来可以看到值已经修改
},
//子组件函数
handleChildSpotData(){
console.log('子组件接收到的数据',this.superGw)
},
在父组件中可以看到值已经修改,但是在子组件中没有响应,请问应该怎么处理呢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
可以利用vue的修饰符
.sync
来实现,非常简单,使用方法如下:当子组件需要更新 superGw 的值时,它需要显式地触发一个更新事件:
可以在子组件中用 watch 或 computed 对父组件传递的 propos 建立依赖关系,不知道这样是否能满足需求。
需要在子组件中使用watch监控父组件传递过来的数据的实时变化。根据传递过来的数据类型不同,watch方法略有差异。
1、传递过来的数据是基础类型
2、传递过来的数据是数组类型
3、传递过来的数据是object对象类型
你这修改的是对象的属性,vue监听不到。使用this.$set()试试
修改对象建议使用set,深入响应式原理
对于父组件变量的变更,子组件并不会因为某函数使用了该变量而执行,如果需要在变量修改后执行某函数需要自己写监听方法