在vue.js中,除了将数据传递给道具以外的子组件,还有哪些替代方法

在vue.js中,除了将数据传递给道具以外的子组件,还有哪些替代方法,vue.js,refs,vue-props,Vue.js,Refs,Vue Props,我知道在vue.js中,将数据从/传递到父/子组件的正确模式是将道具从父组件传递到子组件,并将事件从子组件发送到父组件。但这有什么问题吗: this.$refs['child-component'].setValue(val) 我被告知,只有在没有其他方法的情况下,才应该使用refs来访问子组件 如果我想更新子组件中数组中未绑定到道具的字段的值,比如: this.$refs['child-component'].childArray[index] = val; …其中childArray不是

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

this.$refs['child-component'].setValue(val)
我被告知,只有在没有其他方法的情况下,才应该使用refs来访问子组件

如果我想更新子组件中数组中未绑定到道具的字段的值,比如:

this.$refs['child-component'].childArray[index] = val;
…其中childArray不是子组件的道具?我需要使childArray成为子组件的道具吗?但是,维护childArray就成了家长的责任。如果父组件的业务不是维护childArray呢


谢谢。

事实上,父母根本不需要处理孩子的内部数据。您不应该直接更改一个子的内部数据——而是考虑调用一个方法或者发出一个事件(应该由孩子来处理)。
当前,您正在创建父级和子级之间的紧密耦合-现在父级被有关子级内部的知识所重载。明天,当您决定更改子项的实现时(无论出于何种原因)-很可能您还必须检查使用该子项的所有家长,以检查您的更改是否违反了这些家长的假设。

实际上,处理孩子的内部数据根本不是父母的事。您不应该直接更改一个子的内部数据——而是考虑调用一个方法或者发出一个事件(应该由孩子来处理)。
当前,您正在创建父级和子级之间的紧密耦合-现在父级被有关子级内部的知识所重载。明天,当您决定更改孩子的实现时(无论出于何种原因),您很可能还必须检查所有使用该孩子的家长,以检查您的更改是否违反了这些家长的假设。

太棒了!向孩子们发布事件是我一直在寻找的事情之一(尽管我在OP中没有提到)。我发现这个:。。。来解释一下,太棒了!向孩子们发布事件是我一直在寻找的事情之一(尽管我在OP中没有提到)。我发现这个:。。。解释一下。