单击 <Link> 不会在 require.ensure 的 react-router 中失去焦点

Clicking <Link> doesn't lose focus in react-router with require.ensure

当将 react-router 与 redux-simple-router 一起使用时(可能会或可能不会导致问题),只要我在每个导航项 link 上都有 require.ensure,[=在单击 link.

之后,在我单击页面上的其他位置之前,41=] 不会更改为活动状态

一步一步:

  1. 加载页面;一切都很好
  2. 单击 <Link /> 视图发生变化;不过,link 尚未更新任何导航项的活动状态
  3. 点击页面上的某处,比如正文,活动状态现在正确地显示在当前导航项上,并关闭前一个导航项

这在使用 require.ensure 之前没有发生,在我的生产服务器上也没有发生,那里有 0.bundle.jsbundle.js。它目前只发生在我的本地环境中,每个 link 为每个视图创建一个新的 *.bundle.js 文件。

一些示例路线:

module.exports =
    component: 'div'
    childRoutes: [
        path: '/'
        onEnter: (nextState, replaceState) =>
            if nextState.location.pathname == '/'
                replaceState null, '/game'
        component: Master
        childRoutes: [
            path: 'game'
            getComponent: (location, cb) =>
                require.ensure [], (require) =>
                    cb null, require './views/game'
        ,
            path: 'video-policy'
            getComponent: (location, cb) =>
                require.ensure [], (require) =>
                    cb null, require './views/video-policy'
        ,
            path: '*'
            getComponent: (location, cb) =>
                require.ensure [], (require) =>
                    cb null, require './views/404'
        ]
    ]

还有我的路由器:

render() { return (
    <Provider store={store}>
        <Router history={history} routes={routes} />
    </Provider>
)}

在我的导航中,我有这个:

export default connect(
    state => ({ state: state })
)(HeaderNav);

connect中使用pure: false——否则来自路由器的上下文更新将被忽略。

这是一个例子:

export default connect(
    state => ({ state: state }),
    null, null,
    { pure: false }
)(HeaderNav);

pure: false 也需要添加到直接引用导航组件的组件中。