Reactjs React axios get返回空数组

Reactjs React axios get返回空数组,reactjs,asynchronous,react-hooks,Reactjs,Asynchronous,React Hooks,正如我提到的,console.log只打印空数组。我认为这个问题与异步问题有关 这就是我得到的错误。 因此,我在axios中进行延迟,返回时加载了isLoading,但仍然无法工作 有什么解决办法吗?谢谢你的帮助 js(父组件,这里的每个状态)->MainTest.js->Question.js import React from "react"; import Styled from "styled-components"; function Que

正如我提到的,console.log只打印空数组。我认为这个问题与异步问题有关

这就是我得到的错误。

因此,我在axios中进行延迟,返回时加载了isLoading,但仍然无法工作

有什么解决办法吗?谢谢你的帮助

js(父组件,这里的每个状态)->MainTest.js->Question.js

import React from "react";
import Styled from "styled-components";

function Question({questionList}) {
    console.log(questionList)
    return (
        <QuestionWrap>
            <i className="far fa-calendar-alt"></i>
            <h3>
            {questionList.question.split('</br>').map(line => {
                        return(<>{line}<br/></>)
                    })}
            </h3>
        </QuestionWrap>
    );
}

export default Question;

const QuestionWrap = Styled.div `
width: 100%;
height: 55%;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
 i{
     color: #b56467;
     font-size: 2rem;
     margin-bottom: 2rem;
 }
 h3 {
    text-align: center;
    font-family: "UhBeeBEOJJI";
    color: #3a1a00;
    font-size: 2.7rem;
    line-height: 3.4rem;
 }
`;
Test.js

import React, { useState, useEffect } from "react";
import Tutorial from "../Tutorial";
import MainTest from "../MainTest";
import axios from "axios";

const Test = () => {
    
    const [count, setCount] = useState(0);
    const [questionNum, setQuestionNum] = useState(0);
    const [questionList, setQuestionList] = useState([]);

    useEffect(() => {
        axios.get("http://localhost:3001/get/question").then((response) => {
            setQuestionList(response.data);
        })
    }, []);

    const questionHandler = () => {
        setQuestionNum(questionNum + 1);
        setCount(count + 1);
    };

    return (
        <div>
           
            <MainTest
                questionList={questionList}
                questionNum={questionNum}
                questionHandler={questionHandler}
            />
        </div>
    );
};

export default Test;

import React,{useState,useffect}来自“React”;
从“./Tutorial”导入教程;
从“./MainTest”导入MainTest;
从“axios”导入axios;
常数测试=()=>{
const[count,setCount]=useState(0);
const[questionNum,setQuestionNum]=useState(0);
常量[questionList,setQuestionList]=useState([]);
useffect(()=>{
axios.get(“http://localhost:3001/get/question)然后((回应)=>{
setQuestionList(response.data);
})
}, []);
常量questionHandler=()=>{
setQuestionNum(questionNum+1);
设置计数(计数+1);
};
返回(
);
};
导出默认测试;
MainTest.js

import React from 'react'
import styled from 'styled-components'
import ProgBar from './ProgBar'
import Question from './Question'
import SelectSec from './SelectSec'

function MainTest({questionList, questionNum, questionHandler}) {
    return (
        <TestWrap>
            <ProgBar />
            <Question questionList={questionList[questionNum]}/>
            <SelectSec questionList={questionList[questionNum]} questionHandler={questionHandler}/>
        </TestWrap>
    )
}

export default MainTest

const TestWrap = styled.div`
width: 100vh;
height: 100vh;
background-image: url("./images/background/background.png");
`;
从“React”导入React
从“样式化组件”导入样式化
从“./ProgBar”导入ProgBar
从“./问题”导入问题
从“./SelectSec”导入SelectSec
函数MainTest({questionList,questionNum,questionHandler}){
返回(
)
}
导出默认主测试
const TestWrap=styled.div`
宽度:100vh;
高度:100vh;
背景图片:url(“./images/background/background.png”);
`;
问题.js

import React from "react";
import Styled from "styled-components";

function Question({questionList}) {
    console.log(questionList)
    return (
        <QuestionWrap>
            <i className="far fa-calendar-alt"></i>
            <h3>
            {questionList.question.split('</br>').map(line => {
                        return(<>{line}<br/></>)
                    })}
            </h3>
        </QuestionWrap>
    );
}

export default Question;

const QuestionWrap = Styled.div `
width: 100%;
height: 55%;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
 i{
     color: #b56467;
     font-size: 2rem;
     margin-bottom: 2rem;
 }
 h3 {
    text-align: center;
    font-family: "UhBeeBEOJJI";
    color: #3a1a00;
    font-size: 2.7rem;
    line-height: 3.4rem;
 }
`;
从“React”导入React;
从“样式化组件”导入样式化;
函数问题({questionList}){
console.log(问题列表)
返回(
{questionList.question.split('
').map(行=>{ 返回({line}
) })} ); } 出口违约问题; const QuestionWrap=Styled.div` 宽度:100%; 身高:55%; 显示器:flex; 对齐项目:居中; 证明内容:中心; 弯曲方向:立柱; 我{ 颜色:#b56467; 字号:2rem; 边缘底部:2rem; } h3{ 文本对齐:居中; 字体系列:“UhBeeBEOJJI”; 颜色:#3a1a00; 字体大小:2.7rem; 线高:3.4rem; } `;
在问题组件中,您需要在返回中设置一个条件,如:

function Question({questionList}) {
    console.log(questionList)
    return (
        <QuestionWrap>
            <i className="far fa-calendar-alt"></i>
            <h3>
            {questionList & questionList.question && questionList.question.split('</br>').map(line => {
                        return(<>{line}<br/></>)
                    })}
            </h3>
        </QuestionWrap>
    );
}

export default Question;
函数问题({questionList}){
console.log(问题列表)
返回(
{questionList&questionList.question&questionList.question.split('
').map(行=>{ 返回({line}
) })} ); } 出口违约问题;
这是因为在填写问题列表之前,您的console.log已触发。尝试将此控制台日志包装在useffect中的useffect wit问题列表中dependency@antoineso你好谢谢你的快速回复。我照你说的做了,但还是出错了。。。。hahaI更新了我的答案,我以为问题列表是问题组件中的一个数组