如何 FlowType useQueryLoader 和 usePreloadedQuery?

问题描述

如何正确输入 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;

image

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...