Насправді, існує кілька способів досягти цього.
Ви хочете використовувати 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>
Тоді два діви будуть доступні як this.props.children в SomeComponent і можуть бути надані зі стандартним {} синтаксисом.
Це рішення є ідеальним, коли у вас є лише один вміст HTML для передачі вашому компоненту (уявіть собі компонент Popin, який приймає вміст Popin лише як діти).
Однак якщо у вас є декілька вмісту, ви не можете використовувати дітей (або вам потрібно принаймні поєднувати його з іншим рішенням тут)