【问题标题】:Rendering or updating react element on server在服务器上渲染或更新反应元素
【发布时间】:2016-03-24 19:04:06
【问题描述】:

在我的 React 应用程序中,我的所有组件都可以通过浏览器自行更新,但是我使用的名为 jenkins-api 的模块仅在我将其称为服务器端时才有效。我可以像这样获取数据并将其传递到我的模板中:

require("babel-core/register")({presets: ['es2015', 'react']});
var express = require('express');
var router = express.Router();
var React = require('react');
var ReactDOM = require('react-dom');
var Component = require('../src/javascripts/components/Areachart');
var jenkinsapi = require('jenkins-api');
var jenkins = jenkinsapi.init('https://username:password@my.jenkins.server:8080', {strictSSL: false});

router.get('/', function(req, res, next) {
  jenkins.all_jobs(function(err,jenkins-res){
    if (err) {
      console.log(err)
    }
    res.render('index', { title: 'My App', data: JSON.stringify(jenkins-res) });
  })
});

但我无法将这些数据提供给我的反应组件,理想情况下我希望能够做这样的事情

router.get('/', function(req, res, next) {
  jenkins.all_jobs(function(err,jenkins-res){
    if (err) {
      console.log(err)
    }
    res.render('index', { title: 'My App', data: Component.setState({prop1: jenkins-res.prop1, prop2: jenkins-res.prop2 });

我什至尝试过渲染整个 React 组件:

res.render('index', { title: 'My App', data: ReactDOM.render(React.createElement(Component), document.getElementById('main'))});

但这不起作用,因为document 不存在。当服务器检索到数据时,我想使用 .setState 或类似的东西来更新我的组件的状态 - 这可能吗?

谢谢

【问题讨论】:

    标签: javascript node.js express reactjs


    【解决方案1】:

    我通过让我的 React 组件在安装后向我的服务器发送请求来完成这项工作,当收到请求时,我的快速应用程序将发回相关数据

    【讨论】:

      猜你喜欢
      • 2016-03-28
      • 2020-02-17
      • 1970-01-01
      • 2017-01-14
      • 2016-10-08
      • 1970-01-01
      • 2015-05-09
      • 2021-07-31
      • 1970-01-01
      相关资源
      最近更新 更多