Strapi项目中Fetch请求返回Promise而非JSON的问题排查
问题解决:Fetch接口返回Promise而非JSON数据
你的问题出在res.json()这一行——这个方法本身返回的是一个Promise对象,你没有用await等待它完成解析,所以直接赋值给data的话,得到的就是未解析的Promise,而非预期的JSON数据。
修正后的代码如下:
const [products, setproducts] = useState([]); useEffect(() => { (async () => { try { let res = await fetch("http://localhost:1337/api/categories"); let data = await res.json(); // 这里加上await setproducts(data); console.log(data); } catch (err) { alert(err); } })(); }, []);
补充说明
fetch API返回的响应对象只是一个HTTP响应的外壳,res.json()是一个异步操作,它会读取响应体并将其解析为JSON格式。只有通过await等待这个异步操作完成,才能拿到实际的JSON数据。Postman能正常返回JSON是因为它内部已经自动处理了这个解析过程,不需要你手动写代码处理。
内容的提问来源于stack exchange,提问作者Amir
相关产品推荐
相关产品推荐

