问题描述
如何正确输入 useQueryLoader 和 usePreloadedQuery?
// @flow
import { Suspense,useEffect,type Node } from 'react';
import { Box,Spinner } from 'gestalt';
import { graphql,useQueryLoader,usePreloadedQuery } from 'react-relay/hooks';
import Banner from './banner/Banner.react';
import Loader from '../components/common/Loader';
import type { LayoutContainerQuery } from './__generated__/LayoutContainerQuery.graphql';
const query = graphql`
query LayoutContainerQuery {
viewer {
id
email
...Banner_viewer
}
}
`;
type Props = {|
children: Node,|};
const LayoutContainer = ({ children }: Props): Node => {
const [queryReference,loadQuery] = useQueryLoader(query);
useEffect(() => {
loadQuery({});
},[loadQuery]);
if (queryReference === null) {
return <Spinner show={true} accessibilityLabel="Spinner" />;
}
return (
<Suspense fallback={<Loader show={true} />}>
<Container queryReference={queryReference}>{children}</Container>
</Suspense>
);
};
const Container = ({ queryReference,children }): Node => {
const data = usePreloadedQuery<LayoutContainerQuery>(query,queryReference);
return (
<Box height="100vh" color="white" display="flex" direction="column">
<Suspense fallback={<Loader show={true} />}>
<Banner viewer={data?.viewer} />
</Suspense>
<Suspense fallback={<Loader show={true} />}>{children}</Suspense>
</Box>
);
};
export default LayoutContainer;
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)