为什么我的 React Form 没有发送?

Why isn't my React Form sending?

我离线使用了本教程,我有这个:

import React from 'react';
import '../Normalize.css';
import '../App.css';
import $ from 'jquery';

class ReactFormLabel extends React.Component {
constructor(props) {
  super(props);
}
render() {
    return(
     <label htmlFor={this.props.htmlFor}>{this.props.title}</label>
    )
  }
}

class ReactForm extends React.Component {
  constructor(props) {
    super(props);

    this.state = {
    name: '',
    email: '',
    subject: '',
    message: ''
  }
}

handleChange = (e) => {
  let newState = {};
  newState[e.target.name] = e.target.value;
  this.setState(newState);
};

handleSubmit = (e, message) => {
  e.preventDefault();

  let formData = {
    formSender: this.state.name,
    formEmail: this.state.email,
    formSubject: this.state.subject,
    formMessage: this.state.message
  }

  if (formData.formSender.length < 1 || formData.formEmail.length < 1 || formData.formSubject.length < 1 || formData.formMessage.length < 1) {
  return false;
  }

  $.ajax({
    url: '/some/url',
    dataType: 'json',
    type: 'POST',
    data: formData,
    success: function(data) {
    if (window.confirm('Thank you for your message. Can I erase the form?')) 
{
 document.querySelector('.form-input').val('');
}
},
error: function(xhr, status, err) {
  console.error(status, err.toString());
  alert('There was some problem with sending your message.');
 }
});

this.setState({
  firstName: '',
  lastName: '',
  email: '',
  subject: '',
  message: ''
});
};

render() {
  return(
    <form className='react-form' onSubmit={this.handleSubmit}>
      <fieldset className='form-group'>
        <ReactFormLabel htmlFor='formName' title='Full Name:' />
        <input id='formName' className='form-input' name='name' type='text' required onChange={this.handleChange} value={this.state.name} />
      </fieldset>
      <fieldset className='form-group'>
        <ReactFormLabel htmlFor='formEmail' title='Email:' />
        <input id='formEmail' className='form-input' name='email' type='email' required onChange={this.handleChange} value={this.state.email} />
      </fieldset>
      <fieldset className='form-group'>
        <ReactFormLabel htmlFor='formSubject' title='Subject:'/>
        <input id='formSubject' className='form-input' name='subject' type='text' required onChange={this.handleChange} value={this.state.subject} />
      </fieldset>
      <fieldset className='form-group'>
        <ReactFormLabel htmlFor='formMessage' title='Message:' />
        <textarea id='formMessage' className='form-textarea' name='message' required onChange={this.handleChange}></textarea>
      </fieldset>
      <div className='form-group'>
        <input id='formButton' className='btn' type='submit' placeholder='Send message' />
      </div>
    </form>
    )
  }
 };

export default ReactForm;

我觉得跟这一段有关系:

$.ajax({
    url: '/some/url',
    dataType: 'json',
    type: 'POST',
    data: formData,
    success: function(data) {
    if (window.confirm('Thank you for your message. Can I erase the form?')) 
{
 document.querySelector('.form-input').val('');
}

有了 URL 但我不太确定要将它发送到哪里?我在这里忽略了一些非常简单的事情吗?它呈现良好,验证良好,只是不发送。我遵循了本教程:https://blog.alexdevero.com/insanely-easy-simple-react-form-tutorial/

谢谢!

您必须像这样将函数绑定到组件:

class ReactForm extends React.Component {
    constructor(props) {
        super(props);

        this.state = {
            name: '',
            email: '',
            subject: '',
            message: ''
        } 

        this.handleChange = this.handleChange.bind(this);
        this.handleSubmit = this.handleSubmit.bind(this);
    }

此外,这里是详细说明表单的 React 文档:https://facebook.github.io/react/docs/forms.html