我目前正在建立一个新的反应项目,我在设置状态时遇到问题。我正在向我的后端发出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),我一直在做,没有任何语法错误,至少我知道。我在这里做错了什么?这种方法每次都有效。
答案 0 :(得分:0)
这一行this.getMovieInformation = this.getMovieInformation.bind(this);
不应该是this
吗?
我也不认为你应该在ajax调用中约束axios
。
我建议使用console.h
console.lib
console.dll
向您的服务器发出HTTP请求。