我已经成功实现了 DynamoDB 分页并使用 API Gateway 和 Postman 进行了测试。但是,我对如何在 React 前端实现分页感到困惑。
目前,在第一次调用后端 api 时,它限制返回 2 张图像,带有 LastEvaluatedKey。在我的 React 中,我将 React.useEffect() 实现为:
React.useEffect(() => {
async function getAllImages() {
const result = await getImages(auth.getIdToken());
setImages(result.items);
}
try {
getAllImages();
} catch(e) {
alert(`Failed to fetch images ${e.message}`);
}
}, [auth]);
在我的 api 中,我实现了调用后端的函数:
export async function getImages(idToken: string): Promise<any> {
const response = await axios.get(`${apiEndpoint}/images`, {
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${idToken}`
}
});
let nextKey = response.data.nextKey;
if (response.data.nextKey === null) {
console.log('No more pictures to load!');
return
} else {
const moreResponse = await axios.get(`${apiEndpoint}/images?nextKey=${nextKey}`, {
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${idToken}`
}
});
}
// return response.data.items;
return response.data;
}
然后,我创建了一个“加载更多”按钮来加载更多图像。但是我迷失了如何使用 LastEvaluatedKey 调用后端的第二次调用以加载更多图像?
这是我的 github 项目: https ://github.com/ploratran/DogLookBook/tree/master/client