почему форма не отправляется при использовании приложения create-реагировать?

Моя кнопка аутентификации Google работала нормально, прежде чем я перешел на использование приложения create-react-app. когда я переключаюсь на CRA, форма не отправляется на сервер, и вместо этого кажется, что приложение отправляет новый путь в атрибуте action в историю. CRA каким-то образом автоматически отключает отправку формы? есть ли обходной путь? Спасибо!

это форма:

<form method="get" action="/aoth/google" className="google-form">
      <input type="submit" className="google-login" value="Google+" />
</form>

person tito.300    schedule 11.12.2018    source источник


Ответы (1)


Вот простой фрагмент, показывающий, как обрабатывать отправку формы. Надеюсь, это поможет.

class App extends React.Component {
  constructor() {
    super();
    this.handleSubmit = this.handleSubmit.bind(this);
  }

  handleSubmit(event) {
    event.preventDefault();
    const form = event.target;
    const data = new FormData(form);
    for (let name of data.keys()) {
      const input = form.elements[name];
      console.log(input);
      console.log(input.value);
    }
    
    fetch('/aoth/google', {
      method: 'GET',
      body: data,
    });
  }

    render() {
      return (
        <form onSubmit={this.handleSubmit} className="google-form">
              <input id="username" name="username" type="text" />
              <input type="submit" className="google-login" value="Google+" />
        </form>
      );
   }
}

ReactDOM.render( < App / > ,
  document.getElementById('root')
)
<script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script>

<div id="root" />

person Hamed    schedule 11.12.2018