我的reactjs代码有问题。我已经阅读了关于异步世界和可能发生的问题的帖子,我想我已经解决了这个问题,但是现在我得到了一个空白的文字“Can not GET / thenameofthepage”。
这是我在react.Component
之后的代码getList() {
var returnValue;
$.ajax({
type: "get",
url: "###URL###",
cache: false,
async: false,
success : function(data) {
returnValue = data;
}
});
return returnValue;
}
这是render(){
之后的代码console.log(this.getList());
如果我控制台登录该功能,那么一切都还可以。但是当我尝试将它传递给变量时,一切都会中断。我做了异步。不工作。我尝试初始状态和ComponentDidMount()再次无法正常工作。
P.S
我尝试使用互联网指南:
constructor() {
this.state = { data: [] };
}
getList() {
$.ajax({
type: "get",
url: "http://havvamustafa.devel.signature.eu.com/manage/collection/list_all_ajax",
cache: false,
dataType: 'json',
success: (data) => {
this.setState({data: data});
}
});
}
然后
componentDidMount() {
this.getList();
}
最后
console.log(this.state.data);
现在它因为构造函数而给我错误。
答案 0 :(得分:2)
从Jquery $ .ajax的文档中,不推荐使用async: false
async(默认值:true)
类型:布尔值
默认情况下,所有请求都是异步发送的(默认情况下设置为true)。如果需要同步请求,请将此选项设置为false。跨域请求和dataType:“jsonp”请求不支持同步操作。请注意,同步请求可能会暂时锁定浏览器,并在请求处于活动状态时禁用任何操作。 从jQuery 1.8开始,不推荐使用async:false和jqXHR($ .Deferred);您必须使用success / error / complete回调选项而不是jqXHR对象的相应方法,例如jqXHR.done()或不推荐使用的jqXHR.success()。
我不知道在处理异步数据提取时你会想到什么样的问题,但不要忘记在请求待处理时使用同步请求冻结浏览器。您可以通过以下方式轻松实现:
getList() {
$.ajax({
type: "get",
url: "###URL###",
cache: false
}).done(this.handleSuccess);
},
handleSuccess(results) {
this.setState({data: results});
}
您的数据处理是通过其他方法完成的,它会更干净!