Динамическое имя тега в jsx и React
Я пытаюсь написать компонент React. для тегов заголовков html (h1,h2,h3 и др...), где приоритет заголовка динамически изменяется на основе приоритета, который мы определили в реквизитах.
вот что я пытаюсь сделать.
<h{this.props.priority}>Hello</h{this.props.priority}>
ожидаемый результат:
<h1>Hello</h1>
это не работает. Есть ли способ сделать это?
4 ответов:
нет способа сделать это на месте, просто поместите его в переменную (с первой буквой заглавной):
const CustomTag = `h${this.props.priority}`; <CustomTag>Hello</CustomTag >
для полноты, если вы хотите использовать динамическое имя, вы также можете напрямую позвонить
React.createElementвместо использования JSX:React.createElement(`h${this.props.priority}`, null, 'Hello')это избавляет от необходимости создавать новую переменную или компонент.
С реквизитом:
React.createElement( `h${this.props.priority}`, { foo: 'bar', }, 'Hello' )
С docs:
создать и вернуть новый элемент React данного типа. Аргумент type может быть либо строкой имени тега (например,
'div'или'span'), или a Тип компонента React (класс или функция).код, написанный с помощью JSX, будет преобразован в use
React.createElement(). Обычно вы не будете вызыватьReact.createElement()непосредственно, если вы используете JSX. Смотрите реагировать без JSX чтобы узнать больше.
вы можете добавить что-то вроде этого:
render(){ let yourDynamicTag = $yourTag return ( <div> {yourDynamicTag} </div> ) }
Comments