我的当前组件看起来如下所示:
interface MyComponentProps {
children: HTMLSpanElement
}
...
export default function MyComponent({children}: MyComponentProps){
...
return (
<div>
{children}
</div>
)
}
字符串
我希望我的孩子们只允许一个跨度,没有其他元素。
问题是,我在{children}
下面得到一个错误,告诉我Type HTMLSpanElement is not assignable to ReactNode
似乎任何HTMLElement都会发生这种情况,给出错误Type HTMLElement is not assignable to ReactNode
我很好奇,是否有一种方法可以正确处理这种情况,或者其他一些方法可以设置一个示例,在这个示例中,我输入check只传递span元素作为React元素的子节点。
2条答案
按热度按时间ssm49v7z1#
字符串
_或使用
type
而不是interface
型
rn0zuynd2#
您可以将
React's React.ReactElement
类型沿着使用React.ReactElementProps
实用程序类型。下面是一个如何限制children
属性仅接受span
元素的示例:字符串
现在,当你使用
MyComponent
时,TypeScript会强制只将span
元素(或具有span
兼容props的组件)作为子元素传递。如果你试图传递任何其他元素或组件,TypeScript将引发类型错误。就像这样:
型