0

我知道在 vue.js 中从/向父/子组件传递数据的正确模式是将道具从父级传递给子级,并将事件从子级传递给父级。但这有什么问题吗:

this.$refs['child-component'].setValue(val)

我被告知应该谨慎地使用 refs 来访问子组件,并且只有在没有其他方法的情况下。

如果我想更新子组件中未绑定到道具的数组中的字段值怎么办,如下所示:

this.$refs['child-component'].childArray[index] = val;

...哪里 childArray 不是子组件的道具?我需要让 childArray 成为子组件的道具吗?但随后维护 childArray 成为父母的责任。如果维护 childArray 不是父组件的业务怎么办?

谢谢。

4

1 回答 1

2

其实,弄乱孩子的内部数据,根本不是父母的事。您不应该直接改变孩子的内部数据 - 相反,考虑调用方法或发出事件(应由孩子处理)。

目前,您正在创建父子之间的紧密耦合——现在父子对子内部的知识已经超载。明天,当您决定更改孩子的实施时(无论出于何种原因) - 很可能您还必须检查使用该孩子的所有父母,以检查您的更改是否没有打破这些父母的假设。

于 2020-06-23T06:20:57.507 回答