javascript - 如何在 react 回调中触发 handleSubmit

标签 javascript reactjs

在将 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/

相关文章:

javascript - <audio> 标记到 audioBuffer - 这可能吗?

javascript - 如何管理独立 react 组件之间的通信?

javascript - JS 重定向 url 已更改

reactjs - 使用输入更新 redux 状态

javascript - 在 JavaScript 中对 reduce 中的对象数组进行排序

javascript - Angular2 导入语法 : "import * as <foo>" vs "import {<foo>}"

javascript - 使用AJAX解析页面内容

android - react native 后台进程

reactjs - 使用 react 和 typescript 从 docker 容器获取环境变量

javascript - react "Unexpected token"或根本不显示任何内容