我正试图使用从URL中获取一个API,但我的代码一直返回一个等于获取数组数量的空列表。有什么建议吗?
...
const [error, setError] = useState(null);
const [isLoaded, setIsLoaded] = useState(false);
const [items, setItems] = useState([]);
useEffect(() => {
fetch("URL")
.then(res => res.json())
.then(
(result) => {
setIsLoaded(true);
setItems(result);
console.log(result);
},
(error) => {
setIsLoaded(true);
setError(error);
}
)
}, [])
if (error) {
return <div>Error: {error.message}</div>;
} else if (!isLoaded) {
return <div>Loading...</div>;
} else {
return (
<ul>
{items.map(item => (
<li key={item.id}>
</li>
...
JSON样本:
[
{
"id": xxxxx,
},
"order": x,
.....
发布于 2022-07-11 12:40:21
将useEffect
更改为
useEffect(() => {
fetch("URL")
.then(res => {
setIsLoaded(true);
setItems(res.json());
console.log(res);
})
.catch(error => {
setIsLoaded(true);
setError(error);
}
)
}, [])
发布于 2022-07-11 12:50:16
你在这里是怎么得到结果的
代之而行
fetch("url")
.then(res=>{
console.log(res.json()); //to view if the data you recieved in response is correct or not
setIsLoaded(true);
setItems(res.json());
console.log(Items); //state you created for setItems
)}
发布于 2022-07-11 12:50:59
与使用useEffect
钩子和编写大量行不同,您可以简单地使用useSWR库。
代码示例:
import useSWR from 'swr'
function Profile() {
const { data: userData, error: userError } = useSWR('/api/user', fetcher)
const { data: userInfo, error: userInfoError} = useSWR('/api/userInfo', fetcher)
if (userError || userInfoError) return <div>failed to load</div>
if (!userData || !userInfo) return <div>loading...</div>
return <div>hello {userData.name}, birthDate: {userInfo.birthDate}!</div>
}
https://stackoverflow.com/questions/72938694
复制相似问题