React中使用加载状态仍无法解决数据undefined问题的求助
React中使用加载状态仍无法解决数据undefined问题的求助
我知道setState调用中使用的数据要等到下一次渲染才会更新,也查了很多资料想解决这个问题。我找到的最佳方案是使用加载状态,在数据获取完成前显示加载界面。但不知道为什么这个方法对我不管用,我很好奇是不是哪里漏了什么。
当把paramData传给LineGraph组件时,它始终渲染不出来,而且我在useEffect里打印它的时候,第一次是undefined,但之后再打印就有数据了。另外如果我去掉LineGraph里的data?.entries中的问号,就会报undefined错误。
下面是负责数据获取和加载逻辑的组件(我原本还加了loading状态的setState,在useEffect开始时设为true,结束时设为false,但也没用):
import { useState, useEffect } from "react"; import LineGraph from "../components/Graphs/LineGraph"; import TopNav from "../components/General/TopNav"; import Card from "../layout/Card"; import { fetchParamData } from "../utils/dataHandler"; const Parameters = () => { const [paramData, setParamData] = useState([]); useEffect(() => { const fetchParameters = async () => { const data = await fetchParamData(); setParamData(data) } fetchParameters(); },[]); if(!paramData || paramData === undefined) { return ( <section className="loading"> <p> Loading </p> </section> ) } return ( <> <TopNav /> <Card> <LineGraph data={paramData[0]} /> </Card> </> ); } export default Parameters;
以下是LineGraph组件(以防需要参考):
import { useEffect, useRef } from "react"; import { LineChart, Line, CartesianGrid, XAxis, YAxis, Tooltip } from "recharts"; import colorVars from "../../modules/sassVars.module.scss"; const LineGraph = ({ data }) => { useEffect(() => { console.log(data); },[data]); return ( <div> <LineChart width={400} height={200} data={data?.entries} margin={{ top: 5, right: 20, bottom: 5, left: 0 }}> <Line type="monotone" dataKey="parameterLevel" stroke={colorVars.primary20} strokeWidth="5" /> <CartesianGrid stroke="#ccc" /> <XAxis /> <YAxis /> </LineChart> </div> ); } export default LineGraph;
我感觉自己肯定漏了什么,但不确定到底是什么。我搜了半天也没找到合适的答案,希望有人能帮忙,谢谢!
备注:内容来源于stack exchange,提问作者Tapialj
相关产品推荐
相关产品推荐

