【问题标题】:What does this.setState() call do in reactjs?this.setState() 调用在 reactjs 中有什么作用?
【发布时间】:2018-11-13 22:57:37
【问题描述】:

我基本上知道this.setState() 的用途,但我想知道该构造的调用在做什么。 reactjs 的文档中有一个示例显示 setState 正在运行,但我对构造感到困惑。

这里:

handleClick() {
    this.setState(prevState => ({
      isToggleOn: !prevState.isToggleOn
    }));
  }

这里是完整的例子:codepen

据我了解,调用了 setState 函数。作为参数,有箭头函数。 但是 prevState 是从哪里来的呢?

【问题讨论】:

  • this.setState(function (previousState) { return { isToggleOn: !previousState.isToggleOn }; }) 可能更有意义。您可以为函数的参数命名任何您认为合适的名称。
  • 是的,这是一个很好的补充。但我想知道 previousState 的值来自哪里。在@Quentin 的回答下查看我的评论

标签: javascript reactjs ecmascript-6


【解决方案1】:

prevState 是参数的名称。

与所有参数一样,它们的值在调用函数时由调用函数的代码确定。

您将函数作为参数传递给setState

您还没有将源代码包含在setState 那里,但它会在其中或之外的某个地方。

即别人写的。

您可能不需要查看该代码。 setState 的文档应该告诉您哪些参数将传递给回调函数。

【讨论】:

  • 是的,但对我来说问题是:当我将函数作为参数传递时,谁在“提供”“/填充”函数本身的参数。据我了解,我正在传递一个函数定义,该函数定义将在调用之前(!)调用 setState 以将返回值替换为有效参数,而不是作为实际参数处理,因此 setState 将被调用以 Object-Literal 作为参数,对吗?再说一遍:prevState 的 VALUE 是从哪里来的?
  • “当我将函数作为参数传递时,谁在“提供”“/填充”函数本身的参数。” — 我说得很清楚:您没有在其中包含 setState 的源代码,但它会在其中或之外的某个地方。
  • “据我所知,我正在传递一个函数定义,它将在调用 setState 之前(!)调用” - 不。我也解释过:“您将函数作为参数传递设置状态。”。您正在传递 函数。您没有调用该函数并传递其返回值。
  • "setState 会以 Object-Literal 作为参数被调用,对吧?" - 错误的。 “您将 函数 作为参数传递给 setState。”
  • 啊!现在我明白了。这就是重点。由于我来自 Java,将整个函数而不是其返回值传递给另一个函数仍然是出乎意料的。感谢那! :)
猜你喜欢
  • 2016-06-22
  • 1970-01-01
  • 2020-05-10
  • 2017-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-29
相关资源
最近更新 更多