React axios api调用错误:未捕获(在承诺中)TypeError:setTempFetch不是函数

Posted

技术标签:

【中文标题】React axios api调用错误:未捕获(在承诺中)TypeError:setTempFetch不是函数【英文标题】:React axios api call error: Uncaught (in promise) TypeError: setTempFetch is not a function 【发布时间】:2021-10-10 02:16:38 【问题描述】:

在 React 中尝试通过 axios 加载获取的数据时,我收到一条错误消息,提示设置我的状态的钩子函数不存在。这是因为我使用了 useEffect 并且可能我无法更改 useEffect 中的状态吗?

不确定代码有什么问题:

const tempFetch, setTempFetch = useState("Test load")

useEffect(()=> 
    fetchData()
, [])


const fetchData = async () => 
    
    const config = 
        method: 'get',
        url: 'http://127.0.0.1:8000/api/states/',
        headers: 
                'Authorization': 'Basic amludHc6cG9rZW1vbmRwMjAxMkhQMTI1Mw=='
         
    

    let response = await axios(config)
    let data = await response.data
    console.log("data:",data)
    setTempFetch(data)

【问题讨论】:

useState 返回一个数组,而不是一个对象 【参考方案1】:

useState 钩子返回数组或两个元素。 第一个是值,第二个是设置值的处理程序。

我可以看到您已将 useState 返回值声明为对象

const tempFetch, setTempFetch = useState("Test load")

应该是这样的:

const [tempFetch, setTempFetch] = useState("Test load")

【讨论】:

以上是关于React axios api调用错误:未捕获(在承诺中)TypeError:setTempFetch不是函数的主要内容,如果未能解决你的问题,请参考以下文章

Axios GET请求在我的本地版本上运行,但在Heroku上失败-未捕获(承诺)错误:请求失败,状态码为500

未捕获的 ReferenceError:regeneratorRuntime 未在 react 17、webpack 5 中定义,同时通过操作进行 api 调用

React Axios API 调用与数组循环给出错误的顺序?

React 原生调用 API axios 网络

Laravel - React,强制 Axios 进行拒绝/捕获

为啥在 React 中,我的 axios API 调用有 Authorization Header,其中包含 Bearer <token> 但未被授权并给出 401 错误