不变违规:根路由必须在react-router 2动态路由中呈现单个元素错误

man*_*nas 7 reactjs webpack react-router react-router-component

我有简单的Hello World App,其中一条路线没有子路线或索引路线.使用普通路由而不是jsx sysntax 路由我.我再次使用react-router的动态路由来加载带有webpack的Hello组件.我的app.jsx文件包含以下代码.

import React from "react";
import ReactDOM from "react-dom";
import {Router, browserHistory} from "react-router";
import Hello from "./components/Hello";



const routes = [{
    path:"/",
    getComponents(location, callback) {
        require.ensure([], function (require) {
            callback(null, require('./components/Hello'))
        })
    }
}];


ReactDOM.render(
    <Router history={browserHistory}  routes={routes}/>,
    document.getElementById("container")
); 
Run Code Online (Sandbox Code Playgroud)

Hello.jsx组件具有以下代码

import React from "react";
export default class Hello extends React.Component {

    render() {

        return (
            <h2>Hello World</h2>
        )
    }
}
Run Code Online (Sandbox Code Playgroud)

man*_*nas 11

发生此错误是因为webpack不支持es6模块

如果你使用babel来转换es6代码,那么使用默认关键字like

require('./components/Hello').default
Run Code Online (Sandbox Code Playgroud)

所以路线将是

const routes = [{
    path:"/",
    getComponents(location, callback) {
        require.ensure([], function (require) {
            callback(null, require('./components/Hello').default)
        })
    }
}];
Run Code Online (Sandbox Code Playgroud)