[英]How to pass data with server-side rendering to React-component from Node
[英]How to pass data in server side rendering to reactjs component from node
我对 reactJs 很陌生,刚刚开始学习 reactJS 的功能。 我试图找出一种方法,通过服务器端渲染概念将值从 nodeJS 传递到 reactJS。
在下面的示例中,我能够定义一个 react 组件并将其添加到服务器中并在 UI 中呈现它,但我不确定如何将数据传递给可在组件呈现函数中使用的组件。
客户端.js
var React=require('react');
var ReactDOM=require('react-dom');
var Component=require('./Component.jsx');
ReactDOM.render(
React.createElement(Component),document
);
组件.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>
);
}
});
服务器.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, ...: ...})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.