首页 文章

反应路由器和服务器端rending

提问于
浏览
1

我目前在使用react / react-router的服务器端渲染方面遇到了一个奇怪的问题,我根本无法弄明白 . 我正在使用ES6和Babel(6to5)进行转换

Server.js片段

import routes2 from '../jsx/routes.js';
var routes = React.createElement(Router.Route, { handler: APP, path: "/" });

Router.run(routes, '/', (Handler) => {
    const CONTENT = React.renderToString(<Handler/>);
    console.log('\r\nroutes')
    console.log(CONTENT)
})

Router.run(routes2, '/', (Handler) => {
    const CONTENT2 = React.renderToString(<Handler/>);
    console.log('\r\nroutes2')
    console.log(CONTENT2)
})

Routes.js

"use strict";

var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };

var APP = _interopRequire(require("./app.js"));

var React = _interopRequire(require("react"));

var Router = _interopRequire(require("react-router"));

module.exports = React.createElement(Router.Route, { handler: APP, path: "/" });

产量

CONTENT正确输出我渲染的组件

CONTENT2输出 <noscript></noscript>

出于某种原因,当我从外部文件导入路由时(所以我可以在客户端和服务器代码中都需要它们)我的服务器端渲染无法输出正确的HTML

1 回答

  • 0

    所以我发现了我改变了什么使事情发挥作用 . 我的原始Routes.js文件中的APP导入错误(pre transile)

    我在用

    import React from 'react';
    import Router from 'react-router';
    import APP from './app.js';
    
    export default (
        <Router.Route handler={APP} path="/"/>
    )
    

    代替

    import React from 'react';
    import Router from 'react-router';
    import { APP } from './app.js';
    
    export default (
        <Router.Route handler={APP} path="/"/>
    )
    

相关问题