Недавно я понял, что могу передавать функции через реквизиты рендеринга, которые можно рендерить с помощью jsx.
Пример:
<MessagesComponent
renderMessages = {(eventName, Messages) => (
<>
<h1>{eventName}</h1> // eventName: string
<Messages /> // Messages: Function/React Component (that can be rendered using jsx)
</>
)}>
<h2>{'Loading...'}</h2>
</MessagesComponent>
Обычно я делал бы что-то вроде этого:
<MessagesComponent
renderMessages = {(eventName, messages) => (
<>
<h1>{eventName}</h1>
{messages.map(message => (
<div key = {message.id}>{message.title}</div>
))}
</>
)}
/>
Приведенный выше пример позволяет MessagesComponent решать, как отображать сообщения.
Считается ли приведенный выше пример плохой практикой? Есть ли проблемы с таким подходом? Производительность или что-то в этом роде?





Это довольно близко к Официальные реквизиты для рендеринга React, поэтому вы можете захотеть полностью реализовать его таким образом, но нет, это неплохая практика.
Конечно, в документации показаны примеры передачи примитивных свойств, но я не видел, чтобы кто-нибудь использовал шаблон рендеринга свойств для отправки компонентов React в качестве параметров их родительскому компоненту. Согласно приведенному выше комментарию GG, снижения производительности нет. Мне все еще интересно, есть ли что-то странное с передачей компонента, поскольку я не видел, чтобы кто-то еще использовал шаблон реквизита рендеринга таким образом.
У него не должно быть разницы в производительности между обоими примерами.