【发布时间】:2021-10-27 11:19:11
【问题描述】:
我有一个相当简单的组件:
import {useQuery} from '@apollo/react-hooks';
import resolvers from '../../resolvers';
const DashboardComponent = () => {
const {data} = useQuery(resolvers.ReturnAllMovies);
const movies = data?.movies;
return (
<React.Fragment>
<DashboardMovieOverviewMenu />
{ movies?.length > 0 ? <MovieOverview /> : null }
</React.Fragment>
);
};
export default DashboardComponent;
这里的问题是usequery 两次加载组件,但第一次加载时data 未定义。因此,如果要检查 const movies 中是否有任何电影,我会收到 movies 未定义的错误。这是有道理的,因为数据尚未加载。我使用? 语法进行空检查解决了这个问题,但必须有更简单的方法对吧?或者我应该检查每个组件中的加载是否为真/假?
【问题讨论】:
-
如果你只想渲染一个空列表而不需要很多检查,设置合理的默认值:
const { data: { movies = [] } = {} } = useQuery。现在movies可以立即作为数组使用。
标签: reactjs graphql apollo-client react-apollo