【发布时间】:2018-11-25 18:49:43
【问题描述】:
背景:在 v.0.72.0 中,Flow deprecated * 类型(或者,他们称之为 in the docs,存在类型)。
问题:我们现在如何描述 React 元素的类型(任何元素;它可以是由 React 组件或无状态组件(简单函数)渲染出来的元素,或者当我们在 JSX 中编写 html 标签时会呈现什么)?
试用流程中的示例:
Example 1 — 键入为 Node。这行得通,但是 Node 类型太宽泛了,除了 React 元素之外,还包括字符串、数字、布尔值等。我想缩小类型。
Example 2 — 键入为 Element<*>。这也有效,但正如上面所指出的,* 类型现在即将淘汰。
Example 3 — 键入为 Element<typeof Component>,根据 documentation。这不起作用。有没有合适的方法让它工作?
【问题讨论】:
-
您对
Element<typeof Component>的使用是错误的。它应该与代码中的“真实”组件一起使用,例如,如果Fooextends Component 或Foo是无状态功能组件,则可以编写Element<typeof Foo>。 -
是的,我认为这是错误的,因为文档中的所有示例都使用了特定的组件,但我不知道如何使它足够通用,以便它可以与任何组件一起使用。