Изоморфный React, невозможно отобразить как строку, потому что у меня нет действительного элемента реагирования?
У меня возникли серьезные проблемы с настройкой реакции на рендеринг на стороне сервера. Вот мои файлы, относящиеся к моей проблеме: https://bitbucket.org/snippets/imattacus/g9r6
Я следую учебным пособиям в Интернете, и я просто делаю то, что, как я вижу, делают другие люди, - но у меня сложилось впечатление, что я создал реагирующий компонент (класс?), И мне нужно реагировать.createElement() на компонент i мы сделали так, что это может быть оказано.
Но я не понимаю, как это сделать, потому что createElement требует позиции в DOM?
Я только новичок, чтобы реагировать, так что я, возможно, что-то совершенно не понял по пути - но можете ли вы, ребята, увидеть какую-либо проблему в моем коде, которая вызвала бы "инвариантную ошибку", неспособную использовать renderToString в недействительном ReactElement?
Спасибо!
1 ответ
Я полагаю, это потому, что вы пытаетесь отобразить всю html-страницу, включая html-тэги, что я не думаю (не на 100%), является допустимым.
Вот несколько фрагментов кода, которые я использую для рендеринга реагирующего сервера. (Я использую коа) код сервера
this.body = yield RENDER("index", { TEMPLATE: React.renderToString(<IndexView/>) });
Стандартная HTML-страница
<html>
<head>...</head>
<body>
<div id="app-root">{{ TEMPLATE|safe }}</div>
</body>
</html>
И этот фрагмент JavaScript на стороне клиента
React.render(<IndexView/>, document.getElementById('app-root'));
Короче говоря, не включайте теги html / head в JSX. Иметь layout.html или сортировку сортировки и монтировать компонент React либо в document.body, либо в элемент с заданным идентификатором.