0

我有一個反應的應用程序。它有兩個頁面 - AddStatus和ViewStatus。兩者都是反應組分。發送html呈現的反應作爲電子郵件正文節點js

我的要求是 - 我必須在特定的時間每天發送一封電子郵件,內容詳見ViewStatus屏幕。

我可以設置節點郵件程序和節點調度程序來做到這一點。但是,我如何從後端呈現ViewStatus組件。我如何獲取viewStatus屏幕的HTML。

我嘗試使用ReactDOMServer的renderToString方法如下面我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 

另一種方法我雖然是使用反應路由器,但我不知道如何從後端觸發路線。

如何讓我的viewstatus組件的HTML我server.js

回答

0
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 Loader ..你的代碼似乎很好。

+0

是的,這個簡單的代碼也適用於我。如果我只是在我的server.js中執行此操作。但是,當我在server.js導入我的組件時,我得到錯誤 – SCoder

+0

我能夠得到它後,我刪除react-hmre工作,但當我加載我的組件開始失敗的依賴。首先Jquery然後我包括jquery在我的server.js(這是不正確的方式),但然後它開始失敗的文件沒有定義。什麼是正確的方式來使用renderToString? – SCoder