无法为此模块构建类型化接口:createFragmentRef

问题描述

我有这个中继片段组件,但 Flow 说有一个错误

错误

无法为此模块构建类型化接口。你应该注释 此模块的导出类型。无法确定类型 这个调用表达式。请提供注释,例如,通过添加 围绕此表达式进行类型转换。Flow(signature-verification-failure)

// @flow
import { type Node } from 'react';
import { createFragmentContainer,graphql } from 'react-relay';
import type { MyComponent } from './__generated__/MyComponent.graphql';

const RequestTitle = (props: {| request: MyComponent |}): Node => {

  return (
    <Box color="white" display="flex" direction="row" alignItems="center"></Box>
  );
};

export default createFragmentContainer(RequestTitle,{
  request: graphql`
    fragment MyComponent on TakedownRequest {
      id
      title
      primaryType
    }
  `,});

解决方法

types-first 要求代码的导出部分使用类型进行注释,或者是类型可以简单推断的表达式(例如数字和字符串)

因此您需要明确键入导出:

import { createFragmentContainer,graphql,type RelayFragmentContainer } from 'react-relay';

// ...

const container: RelayFragmentContainer<MyComponent> = createFragmentContainer(RequestTitle,{
    request: graphql`
    fragment MyComponent on TakedownRequest {
      id
      title
      primaryType
    }
  `,});

export default container