#javascript #node.js #reactjs #react-router #isomorphic-javascript
#javascript #node.js #reactjs #react-маршрутизатор #изоморфный-javascript
Вопрос:
У меня есть приложение react. В нем есть две страницы — AddStatus и ViewStatus. Оба являются компонентами react.
Мое требование таково: я должен ежедневно отправлять электронное письмо в определенное время с подробной информацией, как показано на экране ViewStatus.
Я могу настроить node-mailer и node-scheduler для этого. Но как мне визуализировать компонент ViewStatus из серверной части? Как мне получить HTML-код экрана viewStatus.
Я попытался использовать метод renderToString для ReactDOMServer, как показано ниже в моем server.js но получение ошибки
var App = React.createFactory(require('../ViewStatus'))
var p = ReactDOMServer.renderToString(App());
Error: locals[0] does not appear to be a `module` object with Hot Module replace
ment API enabled. You should disable react-transform-hmr in production by using
`env` section in Babel configuration. See the example in README: https://github.
com/gaearon/react-transform-hmr
Другой подход, который я рассматриваю, — это использование react-router, но я не уверен, как запустить маршрут из серверной части.
Как мне получить HTML-код моего компонента viewstatus в моем server.js
Ответ №1:
var React = require("react");
var ReactDOMServer = require("react-dom/server");
var MyComponent = React.createClass({
render: function() {
return React.DOM.div({}, "Text");
}
});
var App = React.createFactory(MyComponent)
var html = ReactDOMServer.renderToString(App());
console.log("HTML =n", html);
Вывод:
HTML =
<div data-reactroot="" data-reactid="1" data-react-checksum="-1164111617">Text</div>
Работает для меня, как говорится в вашей ошибке, похоже, у вас проблемы с загрузчиком React Hot.. Ваш код, похоже, в порядке.
Комментарии:
1. Да, этот простой код работает и для меня. Если я просто сделаю это в своем server.js . Но когда я импортирую свой компонент в server.js Я получаю сообщение об ошибке
2. Я могу заставить его работать после того, как я удалил react-hmre, но когда я загружаю свои компоненты, он начинает отказывать в зависимостях. Сначала Jquery, затем я включил jquery в свой server.js (что неверно), но затем он начинает давать сбой из-за того, что документ не определен. Каков правильный способ использования renderToString?