在与redux的反应中,如何做post post请求

Ben*_* Li 4 post reactjs redux

对于异步示例,我看过从服务器获取数据.但是发帖请求怎么样?怎么做?我不想用jquery.ajax它来做,因为我甚至不想导入jquery

谢谢

Fab*_*ltz 5

最简单的方法是使用fetch,它是大多数浏览器中内置的.您还可以查看其他更通用的选项,如SuperAgent,这些选项需要,但比jQuery小得多.这是一个结合了React和fetch的基本示例:

class Example extends React.Component {
  constructor() {
    super();
    this.state = { user: {} };
    this.onSubmit = this.handleSubmit.bind(this);
  }
  handleSubmit(e) {
    e.preventDefault();
    var self = this;
    fetch('http://reqres.in/api/users', { 
        method: 'POST',
        data: {
          name: self.refs.name,
          job: self.refs.job
        }
      })
      .then(function(response) {
        return response.json()
      }).then(function(body) {
        console.log(body);
      });
  }
  render() {
    return (
      <form onSubmit={this.onSubmit}>
        <input type="text" placeholder="Name" ref="name"/>
        <input type="text" placeholder="Job" ref="job"/>
        <input type="submit" />
      </form>
    );
  }
}

ReactDOM.render(<Example/>, document.getElementById('View'));
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.0/react-dom.min.js"></script>
<div id="View"></div>
Run Code Online (Sandbox Code Playgroud)

请注意,根据您要支持的浏览器,您可能需要包含一个用于提取polyfill.

关于JSBin的示例,因为它可能在这里不起作用.

  • 在`render()`方法中使用`bind(this)`是一种不好的做法,因为每个渲染都会创建新的函数.您可以在构造函数中执行类似`this.onSubmit = this.handleSubmit.bind(this)`的操作,然后在`render`方法中附加`this.onSubmit` (3认同)