AJAX 请求没有在我的 React 组件中设置 this.state.data
AJAX request is not setting this.state.data in my React component.
我最近一直在使用 ReactJS,在使用 AJAX 请求时设置状态时遇到了问题。
AJAX 请求在服务器上发出请求并接收 200 个代码,所以我知道 API 请求运行良好。但是,React 组件似乎没有 this.state.data set。
下面是组件代码:
export class Experiences extends React.Component {
constructor() {
super();
this.state = {
data: []
};
}
loadExperiencesFromServer() {
$.ajax({
url: this.props.url,
dataType: 'json',
cache: false,
success: (data) => {
this.setState({
data: data
})
},
error: (xhr, status, err) => {
console.error(this.props.url, status, err.toString());
}
});
}
componentDidMount() {
this.loadExperiencesFromServer();
}
render () {
return (
<div className="commentBox">
<h1>Comments</h1>
<p>{this.state.data}</p>
</div>
);
}
};
这就是我渲染组件的方式:
ReactDOM.render(<Experiences url='/about_me/experiences/' />, document.getElementById('genomics-geek-container'));
当我直接点击 API 时,我得到以下响应:
$ http http://127.0.0.1:8000/about_me/experiences/
HTTP/1.0 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Date: Wed, 27 Apr 2016 02:15:40 GMT
Server: WSGIServer/0.2 CPython/3.5.1
Vary: Accept, Cookie
X-Frame-Options: SAMEORIGIN
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"company": "Mike",
"created": "2016-04-27T01:30:50.425111Z",
"degree": "test",
"description": "test",
"ended": "2016-04-21",
"experience_type": 1,
"is_current_position": true,
"location": "test",
"owner": "geek",
"position": "test",
"started": "2016-04-27"
}
]
}
所以我知道 API 正在返回数据并且 React 组件正在我的浏览器上呈现,但由于某种原因没有数据加载到组件中。我错过了什么?提前感谢您的帮助!
你正在失去这个上下文。
在您的构造函数中,将其绑定到自定义函数
constructor() {
super();
this.state = {
data: []
};
this.loadExperiencesFromServer = this.loadExperiencesFromServer.bind(this)
}
相关文章:
- AJAX 请求没有在我的 React 组件中设置 this.state.data
- 杰辛特 |传递默认设置 |函数声明和“this”
- 如何为“this”设置文本修饰
- 如何在 jquery 上的设置间隔函数中添加“this”
- 如何保存从单击this.nameClass动态设置的本地存储
- 在JQuery中设置$(this).text的样式
- 如何在 JQuery 中使用 $(this) 来为这些图像设置动画
- JQuery 将输入框值设置为 this.value onclick
- 如何设置 var self = this;从函数外部
- 在评估 javascript 时设置 this 指针
- 为什么调用带括号的方法,例如(obj.func)(),仍然设置“this”
- 为什么在类中的函数中设置this.property会生成新属性,而获取this.property则使用类属性
- AngularJs——设置'this'对象在控制器中的$http调用
- IE8设置$(this).val()时堆栈溢出
- jquery-mobile事件顺序和为什么setTimeout设置$this为undefined
- JavaScript数组.原型如何设置'this'到由方法获得的新数组
- 设置“this"到实例,在创建原型函数期间的回调集中
- 在QUnit测试中设置$(this)的范围
- 设置'this'JQuery方法中匿名函数的上下文
- 设置'this'多着呢