我目前正在使用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?
答案 0 :(得分:0)
这似乎与React.memo
的输入有关,它不会自动通过子项道具。在DefinitelyTyped存储库中有一个discussion。
现在,您可以手动指定children
道具:
type ChildProps = {
name: string;
children: React.ReactNode;
};