我有来自youtube教程的代码,我无法弄清楚为什么我们需要括号(注释行),如果有人可以用简单的方式解释这段代码......谢谢
const [{count, count2}, setCount] = useState({count: 10, count2: 20})
return (
<div className="App">
<button onClick={ () =>
setCount(
currentState => (//can not understand
{...currentState, count: currentState.count+1}
)
)}>+</button>
<h5>Count 1: {count}</h5>
<h5>Count2: {count2}</h5>
</div>
)
为什么我们需要括号
我想因为没有它们()
,它将无法正常工作,即使在编译时也会引发错误。
setCount(
currentState => (//can not understand
{...currentState, count: currentState.count+1}
)
)
setCount
是setState挂钩。它有两种语法:
setCount( oldCount =
你的是第二个。回调返回一个对象,你有2个选项:
currentState => {
return {
...currentState,
count: currentState.count+1
}
}
这比
currentState => ({
...currentState,
count: currentState.count+1
})
所以在教程中,他使用了第二种语法,因为它更简洁。
如果没有括号,它将无法工作:
currentState => {
...currentState,
count: currentState.count+1
}
因为解析器将理解< code>{
是< code >函数体的开始,而不是< code >对象,所以如果不显式地给它< code>(),解析器将无法理解它
这与点差运算符无关。
<代码>=
因为,在JavaScript中,{
可以启动块或对象初始化器(这取决于上下文),所以在任何可以放置块但想要对象初始化器的地方,您都需要将其添加到()
中,以便将{
视为表达式的开始。
可能重复: 之间的差异 有人能解释一下
Rust可以让我们对某些运算符进行重载,这其中大部分的重载都是对std::ops下的trait进行重载而实现的。 重载加法 我们现在来实现一个只支持加法的阉割版复数: use std::ops::Add; #[derive(Debug)] struct Complex { a: f64, b: f64, } impl Add for Complex { type Outpu
问题内容: 我知道golang不会提供运算符重载,因为它认为这会增加复杂性。 所以我想直接对结构实现。 https://play.golang.org/p/1U8omyF8-V 通过上面的代码, AddValue 可以按我的方式工作。但是,我唯一关心的是它是按值传递的,因此我每次必须返回新添加的值。 还有其他更好的方法,以避免返回汇总变量。 问题答案: 是的,使用指针接收器: 通过使用指针接收器,
问题内容: 我已经使用JavaScript了几天,现在我想为定义的对象重载运算符。 在Google搜索了一段时间后,您似乎无法正式执行此操作,但是仍有一些人声称采取了一些漫长的方法来执行此操作。 基本上,我制作了Vector2类,并希望能够执行以下操作: 相反,我必须这样做: 我可以采用什么方法在Vector2类中重载运算符?因为这看起来很丑陋。 问题答案: 如您所见,JavaScript不支持运
问题内容: 之间有什么区别 和 在TensorFlow中?用代替构造图形时,计算图形会有什么不同? 更一般而言, 张量或其他运算是否过载? 问题答案: 如果或中的至少一个是对象,则表达式和是等效的。您可能使用的主要原因是为创建的op指定一个显式的关键字参数,这对于重载的运算符版本是不可能的。 请注意,如果也不是(例如,如果它们是NumPy数组),那么将不会创建TensorFlow op。总是创建一
主要内容:运算符重载的实现,可重载与不可重载的运算符C# 中支持运算符重载,所谓运算符重载就是我们可以使用自定义类型来重新定义 C# 中大多数运算符的功能。运算符重载需要通过 operator 关键字后跟运算符的形式来定义的,我们可以将被重新定义的运算符看作是具有特殊名称的函数,与其他函数一样,该函数也有返回值类型和参数列表,如下例所示: public static Box operator+ (Box b, Box c) { Box bo