将 vue.js 组件子中的对象或值发送到父通信

Posted

技术标签:

【中文标题】将 vue.js 组件子中的对象或值发送到父通信【英文标题】:Emitting object or value in vue.js component child to parent communication 【发布时间】:2019-07-27 16:36:15 【问题描述】:

我想知道在 vue 组件中向父级发送数据的更好方法。从父母到孩子我传递prop 对象,但从孩子到父母$emit。我应该传递对象还是值?例如: product product.id,我还必须在事件侦听器上重用 product 中的一些数据,例如 product.price。我应该使用什么?发出一个对象或仅发出一个值,然后在侦听器函数中循环和条件?

【问题讨论】:

我建议您显示一些相关代码并描述预期结果。 “哪种方式更好”不是一个明确的问题,尽管熟悉架构的人可能会提出一些建议 【参考方案1】:

这在通过引用传递的情况下不起作用。我的意思是它有效,但 Vue 尖叫着不要直接改变道具......

movie 是一个对象,genres 是一个数组。子组件道具和事件

道具: 流派: 类型:数组, 默认 () 返回 []

...

this.$emit('changeGenreList', this.genres)

我必须用 slice() 制作这个数组的本地副本,然后我发出这个副本。

【讨论】:

【参考方案2】:

只需在此处使用双向同步:

@product.sync="product"

在孩子身上:

this.$emit('update:product', product)

每当您对产品的属性进行更改时。

【讨论】:

以上是关于将 vue.js 组件子中的对象或值发送到父通信的主要内容,如果未能解决你的问题,请参考以下文章

成功调用 axios 后,Vue.js 组件不会发送到父级

如何在不调用事件的情况下将数据从子级发送到父级(vue 2)

子到父数据Vue JS

使用 Vue.js 将信息从子组件传递到父组件

Vue.js - 从孙插槽组件发射没有将 $emit 事件冒泡到父级

Vue2.x中的父子组件相互通信