Reactjs 使用props.children和样式化组件;作为「;带字体脚本的道具
我已经浏览了一些现有的解决方案和帖子,但实际上找不到任何解决方案 所以,我将React与Typescript和样式化组件一起使用 我的项目的一部分是Reactjs 使用props.children和样式化组件;作为「;带字体脚本的道具,reactjs,typescript,styled-components,Reactjs,Typescript,Styled Components,我已经浏览了一些现有的解决方案和帖子,但实际上找不到任何解决方案 所以,我将React与Typescript和样式化组件一起使用 我的项目的一部分是标题组件。理想情况下,我想象着使用它就像helloworld无论我在哪里需要它 然而,类型脚本并不像你想象的那么聪明。您可能希望h${props.level}根据props.level变量的类型计算为联合类型“h1”|“h2”|……。相反,它只是字符串。因此,您需要在代码中的某个地方使用as断言,以声明此字符串是JSX.intrinsiceelem
标题
组件。理想情况下,我想象着使用它就像helloworld代码>无论我在哪里需要它
然而,类型脚本并不像你想象的那么聪明。您可能希望h${props.level}
根据props.level
变量的类型计算为联合类型“h1”|“h2”|……
。相反,它只是字符串
。因此,您需要在代码中的某个地方使用as
断言,以声明此字符串
是JSX.intrinsiceelements
的有效键
将联合体“h1”|“h2”|……
作为一种类型是困难的,因为Props['level']
是一个由数字
文字而不是字符串
文字组成的联合体。但我们并不真正需要工会,因为它的标题类型并不重要。您可以将用作“h1”
,这样您就没事了
export default function Heading(props: Props) {
return <S.Heading as={`h${props.level}` as "h1"}>{props.children}</S.Heading>;
}
评估结果为:
"h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "hr"
as const
将按照well@AlekseyL. 您的作为const
,您将把它放在哪里?关于这方面有什么资源吗@琳达·佩斯特哇,你让我大吃一惊。这似乎是一个超级黑客的方法,我甚至不知道。此外,模板文本的as
甚至没有记录在引用链接中。@Tanckom而不是as“h1”
<代码>as const
将防止类型扩展到字符串
,下面是指向docs@Tanckom的链接
"h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "hr"