我试着为html标题标签(h1,h2,h3等)写一个React组件,其中标题优先级根据我们在props中定义的优先级动态变化。
这就是我要做的。
预期产出:
这是行不通的。有什么方法可以做到这一点吗?
为完整起见,如果要使用动态名称,也可以直接调用React.createElement
,而不是使用JSX:
React.createElement(`h${this.props.priority}`, null, 'Hello')
这避免了必须创建一个新的变量或组件。
有道具:
React.createElement(
`h${this.props.priority}`,
{
foo: 'bar',
},
'Hello'
)
从文档中:
创建并返回给定类型的新React元素。类型参数可以是标记名字符串(如'div'
或'span'
),也可以是React组件类型(类或函数)。
使用JSX编写的代码将转换为使用React.createElement()
。如果使用JSX,通常不会直接调用React.createElement()
。有关更多信息,请参阅React with JSX。
匿名用户
如果您使用TypeScript,您会看到这样的错误:
类型“{children:string;}”没有与类型“IntrinsicAttributes”相同的属性。ts(2559)
TypeScript不知道CustomTag
是有效的超文本标记语言标记名称,并抛出一个无益的错误。
要修复此问题,请将CustomTag
转换为JSX. IntrinsicElements的key!
const CustomTag = `h${this.props.priority}` as keyof JSX.IntrinsicElements;
<CustomTag>Hello</CustomTag>
没有办法做到这一点,只需将其放入变量中(首字母大写):
const CustomTag = `h${this.props.priority}`;
<CustomTag>Hello</CustomTag>
问题内容: 我尝试编写一个React组件。对于html标题标签(h1,h2,h3等),其中标题优先级根据我们在道具中定义的优先级动态变化。 这是我尝试做的。 预期输出: 这是行不通的。有什么可能的方法可以做到这一点? 问题答案: 无法就地执行此操作,只需将其放在变量中(首字母大写):
问题内容: 我正在尝试根据组件的类型动态呈现组件。 例如: 那给我一个编译时的错误(使用browserify进行gulp)。我使用数组语法的地方应该是XML。 我可以通过为每个组件创建一个方法来解决此问题: 但这将意味着为我创建的每个组件提供一种新方法。必须对此问题有一个更优雅的解决方案。 我很乐意提出建议。 问题答案: 编译为,它期望将字符串(HTML标记)或函数(ReactClass)作为第一
我正在寻找渲染基于字符串的组件。本质上,我希望找到相当于JavaScript动态函数名能力的JSX()。 所以,如果我有一个字符串,比如
我有一个比较简单的问题,就是尝试将内联脚本添加到React组件中。我目前所掌握的: 我还尝试过: 这两种方法似乎都无法执行所需的脚本。我想我错过的是一件简单的事。有人能帮忙吗? PS:忽略foobar,我有一个真实的id实际上在使用,我不想分享。
问题内容: 我正在尝试在JSX内部使用pre标签。当您在JSX中使用pre标签时,它根本不格式化。为什么?为了使用pre标签,我需要执行以下操作: 为什么? 问题答案: 使用模板文字 模板文字允许使用多行字符串,以保留前导/尾随空格和换行符。
我有一个组件文件夹。它们用一个文件公开,如下所示: 我有一个名为Status的JSX组件,如下所示: 它的任务是加载命名组件的行。 然后我有一个名为的组件,看起来像这样: 从'react'导入React 通过