【问题标题】:server side rendering with react router v4使用反应路由器 v4 进行服务器端渲染
【发布时间】:2017-11-11 20:13:46
【问题描述】:

Following this stackoverflow post

我尝试使用 react-router-v4 设置服务器渲染

我的 routes.js 文件:

var React = require('react');
import ReactDOM from 'react-dom';
import Appa from './components/app.js';
import Welcome from './components/welcome.js';
import { BrowserRouter as Router, Route,Redirect} from 'react-router-dom';

export default () =>
<Router>
  <div>
    <Route exact path="/" component={Appa} />
    <Route path="/home" component={Welcome} />
  </div>
  </Router>;

server.js

import React from 'react';
import {renderToString} from 'react-dom/server';
import { match, RoutingContext,ServerRouter, createServerRenderContext } from 'react-router';
import Routes from './app/routes.js';
var express  = require('express');
const app = express();

app.use(function(req,res,next) {
const context = createServerRenderContext();
  let markup = renderToString(
    <ServerRouter location={req.url} context={context} > <Routes /> </ServerRouter>);
  const result = context.getResult();

  if (result.redirect) {
    res.writeHead(301, {
      Location: result.redirect.pathname,
    });
    res.end();
  } else {
    if (result.missed) {
      res.writeHead(404);
      markup = renderToString(
        <ServerRouter location={req.url} context={context}> <Routes /> </ServerRouter>);
    }
    res.write(markup);
    res.end();
  }

});

app.get('*', function(req,res,next){
 
  res.sendFile(path.resolve(__dirname ,'/dist/index.html'));
   
});

每当我的应用程序路由到 /home 时,加载需要很长时间,最终显示无法获取 /home 请帮助我识别代码中的错误

【问题讨论】:

    标签: reactjs express server-side-rendering react-router-v4


    【解决方案1】:

    我很确定您的回调参数 req 和 res 已切换。回调的签名为function(req, res, next)。尝试将您的 use 函数移到 app.all 回调的声明之上。

    【讨论】:

    • 这对我来说很愚蠢,但在纠正这个问题后,我得到相同的输出无法获得 /home .... 使用 app.use() 和 app.get() 这不起作用..
    • 谢谢@stephen 我再次尝试了你的建议,但我仍然没有得到 /home 并且我用当前代码编辑了我的问题,加载 /home 页面需要很长时间,最后它给出了不能GET /home,我将 console.log(req.url) 输出为 /home
    猜你喜欢
    • 2016-02-05
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 2017-01-14
    • 1970-01-01
    • 2015-04-19
    相关资源
    最近更新 更多