异步xmlhttp请求在反应
发布于 2021-01-31 22:44:15
我正在尝试在React中实现异步XMLHttpRequest。这是我的尝试:
var xhr = new XMLHttpRequest();
var json_obj, status = false;
xhr.open("GET", "https://jsonplaceholder.typicode.com/photos/", true);
xhr.onload = function (e) {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
json_obj = xhr.responseText;
status = true;
} else {
console.error(xhr.statusText);
}
}
};
xhr.onerror = function (e) {
console.error(xhr.statusText);
};
xhr.send(null);
class Welcome extends React.Component {
render() {
return (
<div>
<img src= {status ? json_obj[0].url : 'loading...'}></img>
</div>
);
}
}
ReactDOM.render(
<Welcome/>,
document.getElementById('root')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>
我一直在考虑添加侦听器,但我不知道该怎么做。
总的来说,异步XMLHttpRequest加载并返回值后,我在更新时遇到问题。
关注者
0
被浏览
69
1 个回答
-
使用组件的生命周期加载数据,然后异步设置状态。您还需要对返回的数据使用JSON.parse。
class Welcome extends React.Component { state = {} componentDidMount() { var xhr = new XMLHttpRequest(); var json_obj, status = false; xhr.open("GET", "https://jsonplaceholder.typicode.com/photos/", true); xhr.onload = function (e) { if (xhr.readyState === 4) { if (xhr.status === 200) { var json_obj = JSON.parse(xhr.responseText); status = true; this.setState({ json_obj }); } else { console.error(xhr.statusText); } } }.bind(this); xhr.onerror = function (e) { console.error(xhr.statusText); }; xhr.send(null); } render() { return ( <div> <img src= {this.state.json_obj ? this.state.json_obj[0].url : 'loading...'}></img> </div> ); } } ReactDOM.render( <Welcome/>, document.getElementById('root') ); <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script> <div id="root"></div>
推荐阅读
-
如何获取xmlhttp请求(AJAX)的URL
2021-01-31 关注 0 浏览107 1答案
-
使用用户脚本捕获页面xmlhttp请求
2021-01-31 关注 0 浏览96 1答案
-
同步请求和异步请求有什么区别?(异步= true / false)
2021-01-31 关注 0 浏览105 1答案
-
多个异步请求,异步请求成功后再去执行异步代码,用promise怎么实现
2021-10-28 关注 0 浏览85 1答案
-
带有 Python 请求的异步请求
2022-07-28 关注 0 浏览29 1答案
-
带有Python请求的异步请求
2021-02-02 关注 0 浏览113 1答案
-
在Node.JS中使用异步/等待正确请求
2021-01-31 关注 0 浏览84 1答案
-
在Netty客户端上发送多个异步请求
2021-01-30 关注 0 浏览92 1答案
-
Ajax请求不异步
2021-01-31 关注 0 浏览75 1答案
-
遍历异步请求
2021-01-31 关注 0 浏览151 1答案