React/javascript按块加载数据
我不知道怎么做。我现在的代码:React/javascript按块加载数据,javascript,reactjs,axios,Javascript,Reactjs,Axios,我不知道怎么做。我现在的代码: import React from 'react'; import axios from 'axios'; class App extends React.Component { constructor(props) { super(props); this.state = { isAllLoaded: false, dataItems: [], }; this.serviceURL = URL;
import React from 'react';
import axios from 'axios';
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
isAllLoaded: false,
dataItems: [],
};
this.serviceURL = URL;
}
async componentDidMount() {
const { isAllLoaded, dataItems } = this.state;
try {
const { searchId } = await axios.get(`${this.serviceURL}/search`);
// ????
while (!isAllLoaded) {
const { data } = await axios.get(`${this.serviceURL}/dataItems?searchId=${searchId}`);
const chunkData = data.dataItems;
const isStop = data.stop;
this.setState({
isAllLoaded: isStop,
dataItems: [...dataItems, ...chunkData],
});
}
// ????
} catch (error) {
console.log(`failed: ${error}`); // failed: Error: Request failed with status code 500 :(
}
}
}
我需要获取searchId,
请求:URL/search
响应:{“searchId”:“we5iD”}
然后按块加载所有数据项。
请求:URL/dataItems?searchId=4niyd
响应:{dataItems:[],stop:false}
在加载的块中,我选择了“停止”,即标记是否是最后一块。
我可以得到一个块,但是如何保持加载直到所有块都加载?当我尝试这个代码时,我得到了错误500。我应该将“while”与“await”一起使用吗?500错误是内部服务器错误。是否确实发送了正确的api请求?如果不在while循环中,它将返回正确的结果<代码>{dataItems:Array(300),stop:false}现在我认为这是因为有时服务器会对错误(500)做出真实的响应。。。我不知道如何修复它,并重新发送请求,如果我得到这个错误。500错误是内部服务器错误。是否确实发送了正确的api请求?如果不在while循环中,它将返回正确的结果<代码>{dataItems:Array(300),stop:false}现在我认为这是因为有时服务器会对错误(500)做出真实的响应。。。我不知道如何修复它,并重新发送请求,如果我得到这个错误。