axios 正在从Strapi提取数据,重新呈现或导航回页面时出错

rjee0c15  于 2022-11-23  发布在  iOS
关注(0)|答案(2)|浏览(132)

拜托,帮我解决问题?
我正在从Strapi中获取一些数据,并将其显示在组件中。第一次重新渲染时一切都运行良好,但随后出现了奇怪的行为。
首先-当我导航到另一个页面,然后导航回原始页面-我总是得到错误消息=
未捕获的类型错误:无法读取undefined的属性(阅读“0”)
当我停留在同一页面,然后试图刷新它-有时它的工作正常,有时我得到相同的错误信息如上。
我认为这与获取有关,我想我不明白一些重要的概念,我如何解决我的问题,从strapi获取数据并在组件中使用它的最佳方法是什么?
下面是获取函数的代码

const [data2, setdata2] = useState({});
useEffect(() => {
axios
  .get(`${process.env.REACT_APP_HOST}/api/flipcards`)
  .then(({ data }) => setdata2(data))
  .catch((error) => setError2(error))},
  [])

这是组件:

<Box sx={data2text}>
    <Typography sx={data2title}>{data2.data[0].attributes.title2}</Typography>
    <Typography>{data2.data[0].attributes.details}</Typography>
  </Box>

谢谢你!

hgc7kmma

hgc7kmma1#

也许你应该检查一下你的回答中是否有什么东西。比如:

{data2?.data.length > 0 ? (
   <Box sx={data2text}>
    <Typography sx={data2title}>{data2.data[0].attributes.title2} 
    </Typography>
    <Typography>{data2.data[0].attributes.details}</Typography>
  </Box>
  ) : null}
3vpjnl9f

3vpjnl9f2#

找到了解决方案!我确实添加了?everywhere = data2.data[0]?.attributes?.标题2
还包括如下声明的数据:
const [data,setdata] = useState({data:[]})-我认为这解决了这个问题!

相关问题