reactjs - axios get请求在React中第一次返回undefined

标签 reactjs axios react-hooks request

我正在使用 DRF 创建 api.. 我能够使用 axios 获取数据,但它第一次返回未定义,因此,当我使用 useState 时,它被设置为未定义..

ItemDetail.js:

import React, { useState, useEffect } from 'react'
import axios from 'axios'
const ItemDetail = () => {


    const [detail, setDetail] = useState('')

    const [id, setId] = useState('')



    const RecipeDetail = async () => {

        const res = await axios({
            method: 'get',
            url: `http://127.0.0.1:8000/api/recipe-detail/1`,
            headers: {
                'Content-Type': 'application/json;charset=UTF-8',
                "Access-Control-Allow-Origin": "*",
            }

        })

        setDetail(res.data)

    }

    useEffect(() => {
        RecipeDetail()

    }, [id])

    console.log(`Hi ${detail}`)


    return (
        <div>
            Hi
        </div>

    )
}

export default ItemDetail

那么为什么API第一次返回undefined呢? 我读了一些关于使用 async/await 的答案。此外,当我 console.log(detail) 时,它会多次记录它。为什么会这样? enter image description here 正如你在图片中看到的,它记录了多次..

最佳答案

import React, { useState, useEffect } from 'react';
import axios from 'axios';

const ItemDetail = () => {
  const [detail, setDetail] = useState('');

  const RecipeDetail = async () => {
    const res = await axios({
      method: 'get',
      url: 'http://127.0.0.1:8000/api/recipe-detail/1',
      headers: {
        'Content-Type': 'application/json;charset=UTF-8',
        'Access-Control-Allow-Origin': '*',
      },

    });

    setDetail(res.data);
  };

  useEffect(() => {
    RecipeDetail();
  }, [detail]);

  console.log(`Hi ${detail}`);

  return (
    <div>
      {detail ? 'Hi' : 'Loading ... '}
    </div>

  );
};

export default ItemDetail;

关于reactjs - axios get请求在React中第一次返回undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68495969/

相关文章:

reactjs - 对于 TypeScript 的输入 react-bootstrap 事件,我应该使用什么类型?

javascript - React Axios 输入未定义

javascript - 在 render prop 函数中使用 react hooks

node.js - 使用 Express Backend 和 express-session react App

javascript - 我的按钮需要点击两次才能为第一次点击 React 渲染新组件

javascript - 如何在 React 中呈现选中的单选按钮

javascript - React : axios. 拦截器临时不起作用

reactjs - axios catch 不捕获错误

reactjs - 在 useState 环境中模拟 setState 的第二个参数。让 setState 发生后发生一些事情

javascript - 未捕获的不变违规 : Rendered more hooks than during the previous render