На самом деле, есть несколько способов добиться этого.
Вы хотите использовать JSX в своем реквизите
Вы можете просто использовать {}, чтобы JSX проанализировал параметр. Единственное ограничение такое же, как и для каждого элемента JSX: он должен возвращать только один корневой элемент.
myProp={<div><SomeComponent>Some String</div>}
Лучший читаемый способ сделать это - создать функцию renderMyProp, которая будет возвращать компоненты JSX (точно так же, как стандартная функция рендеринга), а затем просто вызвать myProp = {this.renderMyProp ()}
Вы хотите передать только HTML в виде строки
По умолчанию JSX не позволяет отображать необработанный HTML из строковых значений. Однако есть способ добиться этого:
myProp="<div>This is some html</div>"
Затем в своем компоненте вы можете использовать его так:
<div dangerouslySetInnerHTML=myProp={{ __html: this.renderMyProp() }}></div>
Помните, что это решение «может» открываться при атаках подделки межсайтовых сценариев. Также имейте в виду, что вы можете отображать только простой HTML, без тегов JSX, компонентов или других причудливых вещей.
Путь массива
В ответ вы можете передать массив элементов JSX. Это значит:
myProp={["This is html", <span>Some other</span>, "and again some other"]}
Я бы не рекомендовал этот метод, потому что:
- Будет создано предупреждение (отсутствующие ключи)
- Это не читается
- Это не совсем способ JSX, это скорее взлом, чем задуманный дизайн.
Детский путь
Добавив его для полноты картины, но в качестве реакции, вы также можете получить всех дочерних элементов, находящихся «внутри» вашего компонента.
Итак, если я возьму следующий код:
<SomeComponent>
<div>Some content</div>
<div>Some content</div>
</SomeComponent>
Тогда два div будут доступны как this.props.children в SomeComponent и могут быть отображены с использованием стандартного синтаксиса {}.
Это решение идеально, если у вас есть только один HTML-контент для передачи вашему компоненту (представьте себе компонент Popin, который принимает только содержимое Popin в качестве дочерних).
Однако, если у вас есть несколько содержимого, вы не можете использовать дочерние элементы (или вам нужно хотя бы объединить его с другим решением здесь)