即使在绑定`this`

时间:2017-08-26 22:38:27

标签: javascript ajax reactjs this bind

我目前正在建立一个新的反应项目,我在设置状态时遇到问题。我正在向我的后端发出ajax请求以获取信息,然后尝试设置状态,但是,一旦我离开ajax范围,状态就不会被保存。我将this绑定到ajax请求但仍然没有骰子。以下是我的代码:

import React, { Component } from 'react';
import $ from 'jquery';
import SearchForm from './SearchForm.js';

class Main extends Component {
  constructor() {
  super()
  this.state = {
    actors: [],
    genres: [],
    directors: [],
  }
    this.getMovieInformation = this.getMovieInformation.bind(this);
}
getMovieInformation(movieName){
  $.ajax({
    url: 'http://localhost:3001/get_movie_data',
    data: {name: movieName}
  }).done(function(response){
     this.setState({
       actors: response.movieData.Actors.split(','),
       genres: response.movieData.Genre.split(','),
       writers: response.movieData.Writer.split(','),
       directors: response.movieData.Director.split(',')
     })
  }.bind(this));
}
  render() {
    return (
      <div>
        <SearchForm getMovieInformation={this.getMovieInformation}/>
    </div>
  )
}
}

export default Main;

有趣的是,我之前在ajax响应中设置了相同的方法(我也将bind(this)设置为请求)并且我的状态仍然在ajax范围之外。

我查看了其他stackoverflow文章,每个人都在ajax请求之后继续说绑定(this),我一直在做,没有任何语法错误,至少我知道。我在这里做错了什么?这种方法每次都有效。

1 个答案:

答案 0 :(得分:0)

这一行this.getMovieInformation = this.getMovieInformation.bind(this);不应该是this吗? 我也不认为你应该在ajax调用中约束axios

我建议使用console.h console.lib console.dll 向您的服务器发出HTTP请求。