【问题标题】:React state (setState) with a function as a value, and class this.state with constructor vs state obj [duplicate]使用函数作为值反应状态(setState),并使用构造函数与状态 obj 对 this.state 进行分类 [重复]
【发布时间】:2020-11-16 14:29:09
【问题描述】:

我真的很难理解 React 中的状态。有什么区别,

这个:

class Todo extends ... {
constructor (){
 super()
 this.state = { ... }
 }
}

还有这个:

class Todo extends ... {
 state = { ... }
}

而且我也很困惑和愚蠢地理解为什么他们有时会在状态中放置一个函数。

const [ user, setUser] = useState(() => ...)

我找不到任何资源来区分这些主题。我希望你能帮助我解释这是如何以及为什么会这样。我读过关于 React 的博客,但上面没有提到这些内容。

【问题讨论】:

  • useState 仅在函数组件(非类)中可用。另外两个只是对 Class 组件做同样事情的两种方法。一个状态是用对象初始化的,另一个在构造函数中允许您根据传递给组件的初始道具设置状态。
  • What is the difference between using constructor vs state = {} to declare state in react component? 我怀疑你看到的是setUser(() => ...) 而不是useState(() => ...)
  • 不,useState(() =>) 不同。我已经看到它在使用它。而且我认为它是有效的,但我不知道它是如何工作的。
  • Jacob Smith,所以带构造函数的状态只是将状态传递给组件,但其中包含道具?

标签: javascript reactjs class constructor state


【解决方案1】:

由于 Babel 在后台为你添加了构造函数,所以不需要声明它。您可以省略它并像第二个示例中那样定义您的状态,最终结果将完全相同。

【讨论】:

  • 谢谢先生!那么,constructor (props){ super(props) this.state = { ... } 只在你传递状态时在组件中使用对吧?
  • 不,如果您需要传递一些日期,请使用道具。传递状态被认为是不好的做法,因此实际上没有理由在构造函数中声明它。
  • 是的。我使用 redux 或 context 代替感谢您启发我先生!
猜你喜欢
  • 2021-04-07
  • 1970-01-01
  • 2011-05-21
  • 1970-01-01
  • 2018-06-16
  • 1970-01-01
  • 2019-01-01
  • 2017-09-18
  • 2022-01-16
相关资源
最近更新 更多