在React Router中使用browserHistory而不是hashHistory时,App不会呈现

时间:2016-06-15 18:57:13

标签: javascript reactjs react-router

我在当前项目中使用React Router:

const store = Redux.createStore(bomlerApp);
const App = React.createClass({
    render() {
        return (
            React.createElement('div', null,
                this.props.children
            )
        )
    }
})
var rootElement =
    React.createElement(ReactRedux.Provider, {store: store},
        React.createElement(ReactRouter.Router, {history: ReactRouter.browserHistory},
            React.createElement(ReactRouter.Route, { path: '/', component: App },
                React.createElement(ReactRouter.IndexRoute, { component: Home })
            )
        )
    )
ReactDOM.render(rootElement, document.getElementById('react-app'));

这不起作用。该应用根本不会呈现,我也没有收到任何错误消息。

但是,如果我使用ReactRouter.hashHistory,则应用程序可以运行。

我在这里不理解什么?

1 个答案:

答案 0 :(得分:0)

  • 服务器配置:浏览器历史记录设置可以生成实时 在不重新加载页面的情况下查找urL。但是如果用户会发生什么 深层嵌套urL上的刷新或书签?这些url是 在浏览器上动态生成;他们不符合真实 服务器上的路径,因为任何urL将始终命中服务器 第一个请求,它可能会返回一个找不到错误的页面。

  • 要实施浏览器历史记录设置,您需要导入 历史库中的createBrowserHistory方法。那你可以 调用它,将生成的浏览器历史记录配置作为 路由器组件的历史支柱

  • ***指要使用浏览器历史记录设置,您需要进行重写

      服务器上的

    配置,所以当用户点击/ some-path时   浏览器,服务器将服务于反应路由器所在的索引页面   渲染正确的视图。***