Javascript 将数据传递到ExpressJS+;反应
我有一个应用程序,其中一部分是用twitter登录。 成功登录后,我通常会通过Javascript 将数据传递到ExpressJS+;反应,javascript,node.js,express,reactjs,Javascript,Node.js,Express,Reactjs,我有一个应用程序,其中一部分是用twitter登录。 成功登录后,我通常会通过 app.get('/', function(req, res, next) { log("The Home page has the user info: ", req.session.user); res.render('pages/home', { app: 'home', user: req.session.user || ''
app.get('/', function(req, res, next) {
log("The Home page has the user info: ", req.session.user);
res.render('pages/home', {
app: 'home',
user: req.session.user || ''
});
});
然后可以基于用户
数据呈现模板
但是在React中,我应该如何在登录后将这些数据传递给组件
我正在考虑将数据直接放到浏览器中,但对此我没有信心
<script type="javascript">
var user = #{user}
</script>
var user=#{user}
你觉得怎么样??谢谢。通常,您会将传递给顶级组件的道具以脚本标记的形式发送给客户端 因此,如果您正在执行
或MyApp({user:user})
,您将创建如下脚本标记:
var code = "<script>var __react_preload_data = "
+ JSON.stringify({user: user})
+ ";</script>";
有一个名为react helper()的库可以很好地与express(以及任何其他视图渲染节点框架)配合使用。它几乎可以处理在视图中呈现react组件以及在任何节点框架中从服务器向组件传递数据所需的所有操作。您只需为webpack创建一个入口点(js文件)(lib有一个cli,可以为您生成webpack配置),并向控制器和视图添加一行代码,您的组件就会呈现在该页面上。将数据传递到react组件非常简单:
const component = reactHelper.renderComponent('MyComponent', {user:
req.session.user || ''})
res.render('view-to-render', {component})
还有react helper()的express中间件,它允许您添加可用于所有视图的上下文,这对于用户会话数据来说很方便
app.use(function(req, res, next) {
req.reactHelperContext.user = req.session.user || '';
});
然后,所有react组件都将拥有用户道具,而无需手动将该逻辑添加到每个控制器操作中 @user3470929请创建一个新问题,而不是在评论中提问。
app.use(function(req, res, next) {
req.reactHelperContext.user = req.session.user || '';
});