Нет, вы не можете и не должны пытаться передавать JSX-представление вашего пользовательского интерфейса по проводам.Причина проста: JSX - это не формат data
, а расширенный набор Javascript, переданный в JS перед оценкой.Это означает, что для этого вы должны передать JS, а затем проверить его.То, что вы могли бы сделать, это передать сериализованные сущности через сеть, а затем отобразить их на клиенте, используя React.Component
, созданный для конкретной сущности.В JS нет стандартизированного способа сделать это (JSON - это только частичное представление объектов JS).
Предположим, у вас есть какой-то механизм, который может выводить "JSX", что он будет выводить на самом деле и как будетэто материализуется в вашем коде
Предположим, что есть компонент Page
, отображающий это как:
const Page = (JSX) => {
return (
<div>
{JSX}
</div>
)
}
Где JSX - это значение , которое вы получили через API, и этозначение в качестве примера:
<div id="app">
<SomeComponent/>
<SomeComponent/>
<SomeComponent/>
</div>
Этот "JSX" переносится на вызовы к React.createElement(type, props)
, так что на самом деле это объекты JS.Те объекты, которые должны быть построены, должны иметь доступ к значению type
, которое может быть string
в случае обычного элемента div
, но, скорее всего, будет классами или функциями в случае произвольно сгенерированных компонентов (SomeComponent
),Итак, ваша логика рендеринга должна иметь доступ к этим классам или функциям, оценивать их и затем использовать их в качестве аргумента для React.createElement
.По сути, вы лениво загружаете свои компоненты.
React (своего рода) построен на идее составных примитивов представления (Компоненты), используемых для отображения данных.На практике это означает, что ваше приложение будет определять некоторое (потенциально большое) возможное представление ваших данных и создавать их способом компоновки (реагировать на компоненты).Затем, учитывая данные, созданные вашими пользователями / приложениями / чем-либо еще, он будет использовать эти примитивы и их возможности, чтобы сделать ваши данные доступными для ваших пользователей.