我想在useEffect react Js中使用带有foreach的axios,但它给了我(无法读取属性Symbol(Symbol.iterator)错误?
Posted
技术标签:
【中文标题】我想在useEffect react Js中使用带有foreach的axios,但它给了我(无法读取属性Symbol(Symbol.iterator)错误?【英文标题】:I want to use axios with foreach in useEffect react Js but it gives me (cannot read property Symbol(Symbol.iterator) error? 【发布时间】:2021-09-08 23:36:17 【问题描述】:我想在 foreach 中调用 axios,但它给了我错误“未处理的拒绝 (TypeError): undefined is not iterable (cannot read property Symbol(Symbol.iterator))”
let BooksInfo=["Atomic Habit","Feel the Fear . . . and Do It Anyway","The Four Agreements"]
export default BooksInfo;
这是我的第一次尝试:
import './App.css';
import Card from "./Card"
import Books from "./Books"
import useEffect from 'react';
import axios from "axios"
import promised from 'q';
function App()
useEffect( ()=>
async function test()
await Promise.all(Books.forEach( (book)=>
console.log(book + "????????????")
const test1= axios.get(`https://openlibrary.org/search.json?q=$book`)
console.log(test1)
))
test()
console.log("outside")
)
我也尝试过这种方式,但它仍然给我同样的错误
import './App.css';
import Card from "./Card"
import Books from "./Books"
import useEffect from 'react';
import axios from "axios"
import promised from 'q';
function App()
useEffect( ()=>
async function test()
const test1= await Promise.all(Books.forEach( (book)=>
console.log(book + "????????????")
axios.get(`https://openlibrary.org/search.json?q=$book`)
.then(res=>
console.log("helooo")
console.log(res)
// console.log(tes)
)
))
test()
console.log("outside")
)
【问题讨论】:
【参考方案1】:我会建议一种更好的方法,这样您就可以在进行 API 调用时轻松捕获错误。
try
const result = await Promise.all(BooksInfo.map( (book)=>
console.log(book + "???")
const test1= axios.get(`https://openlibrary.org/search.json?q=$book`)
return test1; // This is essential; this is how map func works
))
console.info("API Result", result);
catch (error)
console.error("Network error",error);
【讨论】:
【参考方案2】:我认为问题可能出在Books
。
您在将其导出为BooksInfo
并将其导入为Books
时对其进行迭代,如果导入不正确,则书籍为null
,因此会触发错误
【讨论】:
以上是关于我想在useEffect react Js中使用带有foreach的axios,但它给了我(无法读取属性Symbol(Symbol.iterator)错误?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用/不使用 useEffect 钩子在 React JS 函数中获取更改的(新)状态值?
React useEffect 抛出错误:无法对未安装的组件执行 React 状态更新
React Native useEffect 在异步函数中的用法[重复]
如何在 React 中将 useEffect 与 Suspense 一起使用?