reactjs 我正在使用useEffect获取Sanity数据(hero),但当我在return语句中使用该数据时,网站崩溃

daolsyd0  于 2022-12-03  发布在  React
关注(0)|答案(1)|浏览(124)

当我console.log hero时,我得到了所有的数据。但是当我在return语句中的任何地方使用hero.tag或hero.heading时,站点都不会加载。
未捕获的类型错误:无法读取undefined的属性(阅读'heading')

未捕获的类型错误:无法读取未定义的属性(阅读'tag')

const [hero, setHero] = useState([])
useEffect(() => {
 client
  .fetch(
    `*[_type == "hero"]{
    background{
      asset->{
      _id,
      url
    }
  },  
  tag,
  heading,
  subheading 
  
}`
  )
  .then((data) => setHero(data)
)
  .catch(console.error);
}, []);

我可以看到它,因为return语句在数据可以从API中获取之前运行。我尝试使用async和await,但我可能用错了。

dbf7pr2w

dbf7pr2w1#

我从一个朋友那里得到了帮助,并使用axios来获取数据(我不认为这是主要的修复)
useEffect(() => { axios .get('https://vve5jxlt.api.sanity.io/v2021-10-21/data/query/production?query=*%5B_type%20%3D%3D%20%22hero%22%5D') .then(response => setHero(response.data)); }, []);
在返回的jsx中我们加上了'

return (
        <>                                                       {hero.length == 0 ?
  <div></div> : <div>{hero.result[0].heading}</div>`

这不是我实际的jsx,但关键是这是通往结果的路径。

相关问题