Могу ли я гарантировать, что состояние изменилось до отправки формы? - PullRequest
1 голос
/ 06 января 2020

В зависимости от того, «одобряет» ли пользователь или отклоняет его, требуется другой обратный вызов отправки. В результате я установил переменную состояния submitCallBack для соответствующей функции в зависимости от того, что щелкнул пользователь. У меня такой вопрос: Могу ли я гарантировать, что будет установлен submitCallBack или произойдет повторный рендеринг перед завершением отправки? (поскольку setState isyn c)

В настоящее время это работает как «ожидаемый», но хотелось бы убедиться, что у меня не возникнет проблем при выпуске

Последовательность событий I должно произойти:

  1. Пользователь нажимает кнопку
  2. this.handleSubmit () вызывается с обратным вызовом
  3. submitCallBack установлен и форма повторно отображает
  4. событие отправки происходит , а handleSubmit установлен с правильным обратным вызовом
class FormClass extends React.Component {
  constructor(props) {
    super(props)
    this.state = {
      submitCallBack: () => {}
    }
  }

  handleSubmit = callback => () => {
    // this needs to be set before the submit completes and the forms callback function 
    // for onSubmit must be set to this new value
    this.setState({ submitCallBack: callback })
  }

   render() {
    const { error, invalid, submitting, handleSubmit, approve, decline } = this.props
    return (
      <form onSubmit={handleSubmit(this.state.submitCallBack)}>
          <Button
            type="submit"
            onClick={this.handleSubmit(approve)}
            primary
            action
            loading={submitting}
          >
            Approve
          </Button>
          <Button type="submit" onClick={this.handleSubmit(decline)}>
            Reject
          </Button>
        </div>
      </form>
    )
  }
}

...