[英]send html rendered by react as email body in node js
I have a react application. 我有一个应聘申请。 It has two pages - AddStatus and ViewStatus. 它有两个页面-AddStatus和ViewStatus。 Both are react components. 两者都是反应成分。
My requirement is - I have to send an email daily at a particular time with details as seen in ViewStatus screen. 我的要求是-我必须每天在特定时间发送一封电子邮件,其中包含ViewStatus屏幕中显示的详细信息。
I can set up node-mailer and node-scheduler to do that. 我可以设置node-mailer和node-scheduler来做到这一点。 But how do i render the ViewStatus component from backend. 但是我如何从后端渲染ViewStatus组件。 How do i get the HTML of viewStatus screen. 如何获取viewStatus屏幕的HTML。
I tried using renderToString method of ReactDOMServer like below in my server.js but getting error 我尝试在server.js中使用ReactDOMServer的renderToString方法,如下所示,但出现错误
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
Another approach I though of is using react-router but I am not sure how to trigger the route from backend. 我虽然使用的另一种方法是使用react-router,但是我不确定如何从后端触发路由。
How do I get the HTML of my viewstatus component in my server.js 如何在server.js中获取viewstatus组件的HTML
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);
Output: 输出:
HTML =
<div data-reactroot="" data-reactid="1" data-react-checksum="-1164111617">Text</div>
Works for me, as your error says, seems like you have issues with the React Hot Loader .. Your code seems to be fine. 如您的错误所述,对我有用,似乎您在使用React Hot Loader时遇到问题..您的代码似乎很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.