在react项目中,使用router当url变化时,页面怎么自动渲染

<Router history={hashHistory}>

            <Route path="/" getComponent={
                (nextState,callback)=>{
                    require.ensure([],(require)=>{
                        callback(null,require('../slides/kim-001').default);
                    },'HomePage');
                }} />

            <Route path="abbott" getComponent={
                (nextState,callback)=>{
                    require.ensure([],(require)=>{
                        callback(null,require('../slides/abbott').default);
                    },'Abbott');
                }} />

            <Route path="/abbott01" getComponent={
                (nextState,callback)=>{
                    require.ensure([],(require)=>{
                        callback(null,require('../slides/abbott-01').default);
                    },'Abbott01');
                }} />

            {/* 其他重定向到 404 */}
            <Route path="/404" getComponent={
                (nextState,callback)=>{
                    require.ensure([],(require)=>{
                        callback(null,require('./404').default);
                    },'NotFound');
                }} />

            {/* 其他重定向到 404 */}
            <Redirect from='*' to='/404'/>

        </Router>

修改前

图片描述

url变化了,但是页面没有变化

图片描述

项目的地址

如果现在的地址是下图
图片描述

http://localhost:6600/#/
然后我在这个后面加上about后,需要按回车才能重新渲染,我希望当我输入about后,页面能自动渲染,而不用按回车

图片描述

阅读 3.8k
2 个回答

可以把整个项目方到github吗?

路由的匹配方式是从上到下的,只要匹配到一个路径就会直接返回,不再继续匹配。abbott01是可以匹配到abbott路径的,所以不会向下匹配就直接返回了。

!!'abbott01'.match('abbott')  // => true
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题