我正在使用以下代码:
handleOwnerMode = ownerChecked => {
this.setState(prev => ({ ownerChecked, showOwner: !prev.showOwner}))
// this.setState(prev => ({ ownerChecked: !prev.ownerChecked, showOwner: !prev.showOwner }))
}
渲染内部是
<Switch onChange={this.handleOwnerMode} checked={this.state.ownerChecked} />
OnChange,我能以某种方式收到关于ownerChecked的更改。为什么会这样呢?我没有写onChange = {this.handleOwnerMode(event.value)}或类似的东西...
此外,对于setState。我通常只使用this.setState({state:newState}),但是现在我可以使用this.setState(prev => {})以某种方式传递以前的状态。是否有定义的重载可以让我做到这一点?
谢谢。
答案 0 :(得分:3)
OnChange,我以某种方式能够收到有关更改的信息 ownerChecked。为什么会这样呢?我没写 onChange = {this.handleOwnerMode(event.value)}或类似的东西...
在两种情况下,您都已将一个函数(回调)传递给“接收者”。第一次使用Switch
组件,第二次使用React。他们每个人都可以使用所需的任何参数来调用您的函数/回调。这是通常使用回调的方式。
是否在某个地方定义了重载,让我可以这样做?
是的,setState
可能会检查您是否向其传递了一个函数并且其行为有所不同:例如给您以前的状态并调用您的函数。如果将对象传递给它,则不会这样做。
答案 1 :(得分:1)
反应事件是合成事件,因此即使yo不传递任何事件参数,函数也会接受它。看看这些。 More information 1,More information 2。