我是一个编程新手,我正在尝试构建一个使用以下API显示所有Rick和Morty角色的react应用程序:
https://rickandmortyapi.com/api/character?page=${pages}
使用fetch,我只能得到前20个字符。下面是我的代码:
fetch("https://rickandmortyapi.com/api/character")
.then((res) => res.json())
.then((data) => setCharacters(data.results));
}, []);
字符串
我尝试使用axios,但它不会显示在我的package.json。
我也很想让函数Map到字符和建筑按钮,过滤他们的物种和性别。
const [characters, setCharacters] = useState([]);
return (
<div>
{character.filter(character => character.gender = "Male").map(filteredCharacter => (
<li>
{filteredCharacter.gender}
</li>
))}
</div>
);
}
export default App;
型
我有一大堆错误。帮帮我?
2条答案
按热度按时间xpcnnkqh1#
此API返回 * 分页数据 *,这意味着它将只返回部分结果,并且您必须发出多个请求才能获取整个数据集。每个请求返回一个 * 页 * 的数据。
获取该URL后,我使用
console.log(data)
查看对象的外观,我看到了如下内容:字符串
这是说总共有671个字符,有34页。它还为您提供了一个URL以获取下一页。
处理这个问题的最简单的算法看起来像这样:
1.获取第一个页面,并查看
info.next
是否有URL。1.如果有,就把它捡回来。
1.重复此操作,直到页面中有
info.next
的null
。1.合并所有页面中的
results
数组。做好这件事有点复杂,这个算法可以做得更好。如果你还在学习,我会假装只有20个字符,继续构建更多的应用程序。
当你想学习获取整个数据集时,你可以尝试在一个循环中获取。您可能会遇到一些问题,解决每个问题都有不同的难度:
由于这是一件常见的事情,因此有一个名为React Query, which provides a hook for fetching paginated data like this的库。它解决了很多这样的问题,但如果你还不习惯使用React,它并不是完全简单的。
bn31dyow2#
获取所有数据,然后将其添加到您的状态:
字符串