我正在尝试自定义 Chakra-ui 选项卡组件。根据他们的文档,它必须被包裹起来,React.forwardRef
因为它们用于cloneElement
在内部传递状态。但随后 TS 抱怨道:
[tsserver 2559] [E] Type '{ children: string; }' has no properties in common with type 'IntrinsicAttributes & { isSelected?: boolean | undefined; } & RefAttributes<HTMLElement>'.
是否可以向CoolTab
组件添加类型,以便它仍然可以与他们的 api 一起使用?
const CoolTab = React.forwardRef<HTMLElement, { isSelected?: boolean }>((props, ref) => {
return (
<Tab ref={ref} isSelected={props.isSelected} {...props}>
{props.isSelected ? '' : ''}
{props.children}
</Tab>
)
})
CoolTab.displayName = 'CoolTab'
const Module = () => {
return (
<CenterLayout>
<Card>
<Tabs>
<TabList>
<CoolTab>General</CoolTab>
<Tab>Notifications</Tab>
</TabList>
<TabPanels>
<TabPanel>
<p>one!</p>
</TabPanel>
<TabPanel>
<p>two!</p>
</TabPanel>
</TabPanels>
</Tabs>
</Card>
</CenterLayout>
)
}