将 Children 道具传递给 React Memo 组件
Pass Children prop to React Memo component
我目前正在使用 React.memo
优化一些 React SFC 组件。
这些组件中的大多数都有子组件。该项目还使用了 TypeScript。
我开始觉得备忘录组件不支持子项,因为每次出现错误时都会向我显示以下错误消息:
Property 'children' does not exist on type 'IntrinsicAttributes & object'
事实证明,这仅适用于我为组件提供 Props 类型的情况。例如
const MyComponent: React.SFC<PropType>
如果我删除道具类型(如下所示),则不会发生错误。
const MyComponent: React.SFC
当然,大多数情况下我都需要道具类型。
我已经设置了一个模拟问题的代码沙箱:
https://codesandbox.io/s/cool-keldysh-urddu?fontsize=14&hidenavigation=1&theme=dark
tl;dr:为什么 React.memo 组件在为组件道具提供类型时不接受子道具?
这似乎是 React.memo
类型的问题,它不会自动通过子道具。 DefinitelyTyped 存储库中有一个 discussion。
现在,您可以手动指定 children
属性:
type ChildProps = {
name: string;
children: React.ReactNode;
};
我目前正在使用 React.memo
优化一些 React SFC 组件。
这些组件中的大多数都有子组件。该项目还使用了 TypeScript。
我开始觉得备忘录组件不支持子项,因为每次出现错误时都会向我显示以下错误消息:
Property 'children' does not exist on type 'IntrinsicAttributes & object'
事实证明,这仅适用于我为组件提供 Props 类型的情况。例如
const MyComponent: React.SFC<PropType>
如果我删除道具类型(如下所示),则不会发生错误。
const MyComponent: React.SFC
当然,大多数情况下我都需要道具类型。
我已经设置了一个模拟问题的代码沙箱:
https://codesandbox.io/s/cool-keldysh-urddu?fontsize=14&hidenavigation=1&theme=dark
tl;dr:为什么 React.memo 组件在为组件道具提供类型时不接受子道具?
这似乎是 React.memo
类型的问题,它不会自动通过子道具。 DefinitelyTyped 存储库中有一个 discussion。
现在,您可以手动指定 children
属性:
type ChildProps = {
name: string;
children: React.ReactNode;
};