【问题标题】:Return react 16 array elements in typescript在打字稿中返回反应 16 个数组元素
【发布时间】:2018-03-20 11:45:45
【问题描述】:

我想使用新的 react 16 功能在我的 render 中返回数组元素,但我收到了打字稿错误 Property 'type' is missing in type 'Element[]'

const Elements: StatelessComponent<{}> = () => ([
  <div key="a"></div>,
  <div key="b"></div>
]);

我错过了什么?使用 @types/react 16.0.10typescript 2.5.3

【问题讨论】:

标签: javascript reactjs typescript jsx


【解决方案1】:

我检查了最新的类型,他们忘记在无状态组件界面中添加新定义。我已经提出了这个问题,应该很快就会解决。

从类组件返回一个数组是可行的,所以如果你现在真的需要它,你可以将你的功能组件转换为类组件。

class Elements extends React.Component<{}> {

  render() {
    return [
       <div key="a"></div>,
       <div key="b"></div>
    ]

  }
}

或使用模块扩充临时扩展 React 类型。只需将以下代码放在您的一个 .ts 文件中的某个位置,打字稿就会自动检测定义中的更改。

declare module "react" {
  interface StatelessComponent<P = {}> {
    (props: P & { children?: ReactNode }, context?: any): ReactElement<any>[] | ReactElement<any> | null;
    propTypes?: ValidationMap<P>;
    contextTypes?: ValidationMap<any>;
    defaultProps?: Partial<P>;
    displayName?: string;
  }
}

【讨论】:

【解决方案2】:

或者使用React fragments:

render() {
    return 
       <>
        <div key="a"></div>,
        <div key="b"></div>
       </>
}

【讨论】:

  • 好电话!这样干净多了。
  • React 期望返回一个对象而不是一个数组,所以这是一个可靠的方法
猜你喜欢
  • 2020-06-03
  • 2021-04-10
  • 1970-01-01
  • 2019-09-26
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 2020-05-11
  • 2019-12-16
相关资源
最近更新 更多