作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在将 place_id 推送到 BrowserHistory 之前,我需要等待回调
handleSubmit(event) {
event.preventDefault();
browserHistory.push(`/place_id/`+this.state.place.place_id);
}
表单会在选择地点时自动提交(这很好)但是 this.state.place 在回调之前仍然为 null。
<form onSubmit={ this.handleSubmit.bind(this) }>
<Autocomplete
onPlaceSelected={(place) => {
this.setState({place: place});
}}
/>
</form>
最佳答案
你可以这样使用:
handleSubmit(event) {
if (this.state.place) {
browserHistory.push(`/place_id/`+this.state.place.place_id);
} else {
event.preventDefault();
}
}
这是组件:
<form onSubmit={ this.handleSubmit.bind(this) } ref={(c) => this.frm = c}>
<Autocomplete
onPlaceSelected={(place) => {
this.setState({place: place}, () => {this.frm.submit()});
}}
/>
</form>
setState
方法的回调会在地方的值被设置为state后调用form的submit
,并且一旦它在那里 - browserHistory.push
将在 handleSubmit
中调用,因为您在 this.state
中有一个位置。
关于javascript - 如何在 react 回调中触发 handleSubmit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46015973/
我是一名优秀的程序员,十分优秀!