2

将 react-router 与 redux-simple-router 一起使用时(可能会或可能不会导致问题),只要我在每个导航项链接上都有 require.ensure ,链接不会更改为活动状态,直到我点击单击链接后页面上的其他位置。

一步步:

  1. 加载页面;一切安好
  2. 单击a <Link />,视图发生变化;虽然,该链接尚未更新任何导航项目的活动状态
  3. 单击页面上的某处,例如正文,活动状态现在正确地位于当前导航项上,而前一个导航项则关闭

这在使用之前没有发生require.ensure,也没有发生在我的生产服务器上,它有0.bundle.jsbundle.js. 它目前只发生在我的本地环境中,其中每个链接*.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);
4

1 回答 1

3

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

这是一个例子:

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

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

于 2016-01-15T20:00:49.980 回答