首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取返回空结果的API - JSON

获取返回空结果的API - JSON
EN

Stack Overflow用户
提问于 2022-07-11 12:34:54
回答 3查看 73关注 0票数 1

我正试图使用从URL中获取一个API,但我的代码一直返回一个等于获取数组数量的空列表。有什么建议吗?

代码语言:javascript
运行
复制
  ...
  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样本:

代码语言:javascript
运行
复制
[
    {
        "id": xxxxx,
    },
        "order": x,
 .....
EN

回答 3

Stack Overflow用户

发布于 2022-07-11 12:40:21

useEffect更改为

代码语言:javascript
运行
复制
useEffect(() => {
    fetch("URL")
      .then(res => {
          setIsLoaded(true);
          setItems(res.json());
          console.log(res);
      })
      .catch(error => {
          setIsLoaded(true);
          setError(error);
        }
      )
  }, [])
票数 0
EN

Stack Overflow用户

发布于 2022-07-11 12:50:16

你在这里是怎么得到结果的

代之而行

代码语言:javascript
运行
复制
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
)}

票数 0
EN

Stack Overflow用户

发布于 2022-07-11 12:50:59

与使用useEffect钩子和编写大量行不同,您可以简单地使用useSWR库

代码示例:

代码语言:javascript
运行
复制
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>
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72938694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档