在第二次尝试时反应功能松散状态

时间:2019-03-20 23:45:18

标签: javascript node.js reactjs

此代码在第一次和第三次尝试时均能正常工作,总有一个步骤会导致错误并且不向db发送任何数据,每次都破坏了我的业务逻辑,无论是否尝试重新加载页面,我都将得到相同的结果

  apiCall = e => {
    e.preventDefault();
    window.scrollTo(0, 0);
    this.setState({ loading: true });
    const { currentUser } = fire.auth();
    let userEmail = currentUser.email;
    let userUnderscore = userEmail.replace(/\./g, '_');
    let intervalMS = this.state.interval * 60000;
    let url = `https://url.com/api/v1/${userUnderscore}/${this.state.urlTask}?url=${this.state.urlTask}&width=${this.state.width}&interval=${intervalMS}&user=${userUnderscore}&running=true`;
    if (this.state.interval >= 1 && this.state.urlTask !== "") {
      fetch(url)
    }
    else {
      this.setState({ addURLError: true, loading: false });
    }
    this.setState({ addURL: true, addURLError: false });
    fire.database().ref(`/master/users/${userUnderscore}/setup/`)
      .update({
        running: true,
        interval: this.state.interval,
        url: this.state.urlTask,
      });
    setTimeout(
      function () {
        this.setState({ addURL: false, running: true });
        window.location.reload();
      }.bind(this), 2000
    );
  }

  ...

  <Button color='black' onClick={this.apiCall} animated='vertical' type='submit'>

编辑

该函数和数据库实际上已更新,问题在于,即使表单保留值,第二次尝试状态也为空

1 个答案:

答案 0 :(得分:0)

我通过在尝试执行该功能之前重新加载应用程序来解决此问题,这样始终可以使用一种新状态:window.location.reload();