将儿童道具传递给React Memo组件

时间:2019-11-15 10:20:29

标签: javascript reactjs typescript memo

我目前正在使用React.memo来优化许多React SFC组件。

这些组件中的大多数都有子组件。该项目还使用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:为什么在为组件prop提供类型时,React.memo组件为什么不接受子prop?

1 个答案:

答案 0 :(得分:0)

这似乎与React.memo的输入有关,它不会自动通过子项道具。在DefinitelyTyped存储库中有一个discussion

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

type ChildProps = {
  name: string;
  children: React.ReactNode;
};