当前位置: 首页 > 知识库问答 >
问题:

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

漆雕和雅
2023-03-14

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

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

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

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

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

…其中childArray不是子组件的道具?我需要使childArray成为子组件的道具吗?但是,维护childArray就成了家长的责任。如果父组件的业务不是维护childArray呢?

谢谢。

共有1个答案

谭吉星
2023-03-14

实际上,处理孩子的内部数据根本不是父母的事。你不应该直接改变一个孩子的内部数据——而是考虑调用一个方法或者发出一个事件(应该由孩子来处理)。

当前,您正在创建父级和子级之间的紧密耦合-现在父级被有关子级内部的知识所重载。明天,当您决定更改孩子的实现时(无论出于何种原因),您很可能还必须检查所有使用该孩子的家长,以检查您的更改是否违反了这些家长的假设。

 类似资料:
  • 我试图传递一个道具给一个子组件在反应,但它不显示在所有的道具,当我控制台日志。甚至关键的也不显示。对此的任何帮助都将不胜感激。

  • 问题内容: 我需要使用路由器将道具传递到组件。这是我的代码: 如您所见,isAuthenticated我想传递给Login组件的道具。 当我登录道具时, isAuthenticated 道具不存在。我做错了什么?如何正确通过道具?我关注了文档以及其他讨论。据我了解,它应该可以工作。的版本 做出反应路由器 和 反应路由器- DOM 是 4.0.0 问题答案: 像这样传递它: 它应该在“登录组件”中可

  • 也许有一种方法可以将组件绑定到事件? 在使用React一年多后,在Sebastien Lorber的回答的激励下,我得出结论,将子组件作为参数传递给父母中的函数实际上不是React的方式,也不是一个好主意。我换了答案。

  • 问题内容: 我想将功能传递给子组件,但出现此错误。 基本上是我想做的。 var ReactGridLayout = require(’react-grid-layout’); 似乎它是在React v16中引入的。因此,将函数从父代传递给子代的正确方法是什么? 问题答案: 我发现出了什么问题。这是因为react-grid-layout。我必须将其余的属性传递给孩子。

  • 问题内容: 一个人如何将没有价值的道具传递给反应成分? 注意-没有为这些道具指定默认道具值。 我似乎找不到关于它的任何引用,但是通过观察这些属性的值(它们在默认情况下会分配给它们)。 问题答案: 编译器将您传递的内容解释为布尔值属性。编写纯HTML时也是如此。没有值的属性被解释为布尔值。由于JSX是用于编写HTML的语法糖,因此具有相同的行为是有道理的。 官方的React文档包含以下内容: 布尔属

  • 问题内容: 我是新来的反应者和救赎者。我有一个这样的嵌套组件的场景。 A> B> C> D A组件中使用了一个属性,D组件中将使用它。因此,我有两种方法: 从组件A的redux存储中获取状态,然后将其作为道具传递给所有它的子组件,即使它仅在D组件中使用。 我应该连接到组件D中的redux存储,然后从那里获取该属性。 正确的方法是什么? 问题答案: 正如redux的作者Dan Abramov在 本期