
关于问题2,请参见Dan的出色解答:在这种情况下,是否需要使用setState(function)重载?
不,这不是局部变量。与
this.state
在构造函数中声明相同。是的,在这种情况下,您只能使用
this.setState({ value: this.state.value + 1 }),结果将是相同的。
但是请注意,使用功能
setState可以带来一些好处:
- 如果在外部声明setState函数,则可以重用它:
const increment = prevState => ({ value: prevState.value + 1 })现在,如果您有多个组件需要使用此功能,则只需在任何地方导入和重用逻辑。
this.setState(increment)
- React压扁数个
setState
并批量执行它们。这可能会导致某些意外行为。请参见以下示例:
http://prepen.io/CodinCat/pen/pebLaZ
add3 () { this.setState({ count: this.state.count + 1 }) this.setState({ count: this.state.count + 1 }) this.setState({ count: this.state.count + 1 }) }执行此功能的
count意志只会加1
如果使用功能性setState:
http://prepen.io/CodinCat/pen/dvXmwX
const add = state => ({ count: state.count + 1 }) this.setState(add) this.setState(add) this.setState(add)计数将按预期增加+3。
您可以在此处查看文档:https : //facebook.github.io/react/docs/react-
component.html#setstate
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)