根据React文档,我们可以使用两种方式来进行setState操作,一种是对象语法,另一种是函数语法,如下所示:
this.setState((prevState, props) => ({
counter: prevState.counter + props.increment
}));
我的理解是箭头函数的语法类似于
() => {}
,其中箭头=>
后面跟着花括号,但是根据示例,它使用的是圆括号而不是花括号。这些语法
()=>{}
和()=>({})
之间有什么区别?按照文档尝试的示例代码在
handleClick
函数中使用this.setStage(prevStage=>({}))
语法时可以工作,如果将其更改为this.setState(prevStage=>{})
,它将无法切换按钮值。以下是可工作的代码:
class Toggle extends React.Component {
constructor(props) {
super(props);
this.state = {
isToggleOn : true
}
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
this.setState(prevState => ({
isToggleOn: !prevState.isToggleOn
}));
}
render() {
return (
<div>
<button onClick={this.handleClick}>
{this.state.isToggleOn ? 'ON' : "OFF"}
</button>
</div>
);
}
}