gpt4 book ai didi

javascript - React setState + 'prevState' 从哪里来?

转载 作者:IT王子 更新时间:2023-10-29 03:13:51 30 4
gpt4 key购买 nike

我刚开始学习 React 和 JavaScript。
在学习本教程时,我得到了一个组件的示例代码,它创建了一个切换按钮。
这是代码的一部分:

class Toggle extends React.Component {
constructor(props) {
super(props);
this.state = {isToggleOn: true};
this.handleClick = this.handleClick.bind(this);
}

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

这里有 2 件事困扰着我:

  1. prevState 参数从何而来?
    在调用它之前,我没有看到任何类似 var prevState = this.state; 的东西,但它仍然有效。
  2. 箭头函数的语法:为什么箭头后面要有括号?
    为什么通常的 arg => { 声明; 语法在这里工作?

抱歉新手问题...

最佳答案

  1. prevStateReact 提供以及 props,两者都是可选的。

    • 2019 年 4 月 13 日更新:React 通过将 prevState 重命名为 updater 更改了 setState 函数文档。回调函数仍然有两个参数;应用更改时的 stateprops
  2. 括号允许多行,如果您不使用括号,您将被迫使用 return。您可以使用单行,但不需要花括号。

    • 更新:我忘了提到一个需要有括号的具体情况。如果您要返回一个没有 return 语句的对象,则必须将其括在括号中。感谢@joedotnot 捕获了这一点。所以 () => {foo: true} 会抛出一个错误,因为它看起来像一个函数,而 foo: true 是一个无效的行。要解决这个问题,它必须看起来像 () => ({ foo: true })

关于javascript - React setState + 'prevState' 从哪里来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41655402/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com