【发布时间】:2018-12-02 09:02:21
【问题描述】:
我最近在 React 中了解到 updater functions 用于 setState。
现在我看到了这个概念以两种不同的方式使用。假设我们有一个这样的状态对象:
interface State {
readonly expanded: boolean;
readonly slugs: string[];
}
state: State = { expanded: false, slugs: [] }
我见过这样使用更新函数:
this.setState(prevState => ({ ...prevState, expanded: !prevState.expanded }));
像这样:
this.setState(({ expanded }) => ({ expanded: !expanded }));
我自己试过了,看看使用这两者之间是否有区别,但我找不到一个(除了字符数量????)。我的直觉告诉我,第一种方式可能更安全,因为第二种方式state(在本例中为slugs)可能会被覆盖?
编辑:这个问题已被标记为与this question 重复,但它本质上是不同的,因为我想知道setState 的功能,而不是TypeScript 的类型注释如何工作.为了清楚起见,我只是提供了 TypeScript 类型。很抱歉这个问题引起了混乱。英语不是我的主要语言,我不知道如何更清楚地表达这一点。幸运的是,有人完美理解并回答了这个问题。
【问题讨论】:
-
另外,请查看this post 以获得更多帮助。
-
@BhojendraRauniyar 我相信这里的类型声明只是为了演示
state的内部结构。 -
@skyboyer OP 不会与
state混淆,而是使用不同的语法以及解构有助于理解的地方。 -
@BhojendraRauniyar 是的,他在问
setState的功能和返回对象版本在这种情况下是否有任何区别。
标签: javascript reactjs typescript setstate