【发布时间】:2020-11-04 18:45:08
【问题描述】:
我试图理解为什么 es6 对象传播行为在对象之间是不同的,以及何时在 React 组件中使用它来传播道具。
以下内容对我来说很有意义:
const a = {
a:1,
b:2
}
const c = {...a}
现在变量 c 将具有与变量“a”相同的属性,键值对的格式为 a:1, b:2。
这没有意义:
<Mycomponent {...a} />
将道具变成"a={1} b={2}"。为什么它以这种方式运行,而不是通常的键值对a:1, b:2?
我想了解为什么会这样,以便更好地理解语言。
我看过解释传播在这两种情况下如何工作的教程和文章,但我没有找到答案为什么传播不同?
【问题讨论】:
-
因为这是两个不同的运算符在不同的对象上工作。两者都是“传播”,但它们不是相同的“传播”。考虑数字上的
+运算符,然后考虑它对字符串的作用。 -
这能回答你的问题吗? What do these three dots in React do?
-
谢谢@Sulthan 我认为理解它们不是同一类型的传播是我理解这一点的关键,我认为它们是相同的并且应该以相同的方式表现。
-
@jobe 还要注意 spread 如何作用于数组和函数参数。它仍然在传播一些东西,但每次都以不同的方式传播。
-
@Sulthan 在那些情况下它并没有让我感到困惑,因为数组是一种不同类型的对象,但在这种情况下,道具对象看起来像我在问题中描述的“a”的常规对象,所以我希望它们也会以同样的方式传播。
标签: reactjs ecmascript-6 spread