node.js - 如何将服务器端渲染中的数据从 Node 传递到reactjs组件

标签 node.js reactjs babeljs server-side-rendering

我对reactJs非常陌生,刚刚开始学习reactJS的功能。我正在尝试找出一种通过服务器端渲染概念将值从nodeJS传递到reactJS的方法。

在下面的示例中,我能够定义一个 React 组件并将其添加到服务器中并在 UI 中渲染它,但我不确定如何将数据传递给可在组件渲染函数中使用的组件。

client.js

var React=require('react');
var ReactDOM=require('react-dom');
var Component=require('./Component.jsx');


ReactDOM.render(
    React.createElement(Component),document
);

Component.jsx

var React=require('react'),
Request=require('superagent')


module.exports = React.createClass({
getInitialState: function () {
    return {

    };
  },
  componentWillMount: function () {

  },

  componentDidMount: function() {
    clearInterval(this.intervalID)
  },

  _handleClick: function () {
    alert('You clicked!')
  },

    render:function(){
    return(
        <html>
        <head>
            <title> ReactJS - demo </title>
            <link rel='stylesheet' href='/style.css'/>
        </head>
        <body>
        <div>
            <h1>react js testing</h1>
            <p>This is so cool</p>
            <button onClick={this._handleClick}>Click Me!</button>
        </div>
        <script src='/bundle.js'/>
        </body>
        </html>
        );
    }

});

Server.js

require('babel-register')({
    presets:['react']
});
var express = require('express');
var app=express();
var React=require('react');
var ReactDOMServer=require('react-dom/server');
var Component=require('./Component.jsx');

app.use(express.static('public'));
app.get('/',function(request,response){
    var html=ReactDOMServer.renderToString(
        React.createElement(Component)
    )
    response.send(html)
});

var PORT=4444;
app.listen(PORT,function(){
    console.log("Node js listening in port:"+ PORT);
})

更新1:

我现在可以将值传递给服务器端呈现的组件,如下所示

React.createElement(Component,{object:...})

现在服务器端设置工作正常。

我需要使这个 {object:...} 在我的 client.js 中可用,以便客户端功能正常工作。知道如何在 client.js 中获取这个值吗?

最佳答案

React.createElement
ReactElement createElement(
    string/ReactClass type,
    [object props],
    [children ...]
)

创建并返回给定类型的新 ReactElement。 type 参数可以是 html 标签名称字符串(例如“div”、“span”等),也可以是 ReactClass(通过 React.createClass 创建)。

在你的版本中

React.createElement(Component)

你需要使用类似的东西

React.createElement(Component, {obj: obj, ...: ...})

关于node.js - 如何将服务器端渲染中的数据从 Node 传递到reactjs组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39888623/

相关文章:

javascript - 无法安装 jest

reactjs - react native 无法找到具有 testID 的元素

javascript - React - 从子组件外部调用父函数

babeljs - 错误错误 : A constructor name should not start with a lowercase letter babel/new-cap

javascript - 运行 Gulp 任务时 Gulp 抛出 "is read-only while parsing file"错误

javascript - Nodejs 中的 RXJS PostgreSQL 背压

node.js - 连接到本地主机 :3000 from another computer | expressjs, nodejs

performance - 是什么让 node.js SlowBuffers "slow"?

javascript - 如何将 URL 参数传递给 ReactJS 中的渲染函数

php - Node.js 套接字的 php 的 fgetc() 等价物是什么?