5

我目前正在使用React.memo.

这些组件中的大多数都有子组件。该项目还使用 TypeScript。

我开始觉得备忘录组件不支持子组件,因为每次出现错误时我都会收到以下错误消息:

类型“IntrinsicAttributes & object”上不存在属性“children”

事实证明,这只适用于我为组件提供 Props 类型的情况。例如

const MyComponent: React.SFC<PropType>

如果我删除道具类型(如下所示),则不会发生错误。

const MyComponent: React.SFC

当然,在大多数情况下,我都需要 prop 类型。

我已经设置了一个模拟问题的代码沙箱:

https://codesandbox.io/s/cool-keldysh-urddu?fontsize=14&hidenavigation=1&theme=dark

tl;dr:为什么 React.memo 组件在为组件道具提供了类型时不接受子道具?

4

1 回答 1

10

这似乎是React.memo打字的问题,它不会自动通过儿童道具。有一个关于绝对类型回购的讨论。

现在,您可以手动指定children道具:

type ChildProps = {
  name: string;
  children: React.ReactNode;
};
于 2019-11-15T10:44:32.913 回答