我刚刚开始学习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
}));
}
有两件事困扰我:
prevState
参数从何而来?在调用它之前,我看不到
var prevState = this.state;
之类的东西,但它仍然有效。 为什么通常的
arg => { statement; }
语法在这里不起作用? 对不起,新手问题...
最佳答案
prevState
与props
一起由React提供,两者都是可选的。prevState
重命名为updater
来更改setState函数文档。回调函数仍然需要两个参数。应用更改时的state
和props
。 return
。您可以使用一行,但不需要花括号。return
语句,则必须将其包装在括号中。谢谢@joedotnot捕获了它。因此() => {foo: true}
会引发错误,因为它看起来像一个函数,而foo: true
是无效行。要解决这个问题,它必须看起来像() => ({ foo: true })