我想在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 一起使用?

React/NextJS 使用 UseEffect 错误:渲染的钩子比上一次渲染期间更多

如何在 UseEffect 中使用自定义方法?