react-router嵌套子路由404问题

发布于 2022-09-11 22:00:13 字数 1444 浏览 21 评论 0

一级路由

<HashRouter>
  <Switch>
    <Route path="/login" component={LoginUser}  exact/>
    <Route path="/404" component={NoMatch} exact/>
    <Route path="/555" component={NoPermission} exact/>
    <Route path="/" component={DefaultLayout} />
    <Redirect from="*" to="/404" />
  </Switch>
</HashRouter>

DefaultLayout.js

<Switch>
  <Route path={this.props.match.url} component={Home} exact />
  <Route 
    path={this.props.match.url + 'about'}
    component={About}
  />
  <Route 
    path={this.props.match.url + 'article'}
    component={Article}
  />
  <Redirect from="*" to={{pathname:'/404'}}/>
</Switch>

Article.js里面有嵌套子路由

<Route path='/article/tab1' component={MyList}></Route>
<Route path='/article/tab2' component={MyForm}></Route>
<Redirect from="*" to="/404"></Redirect>
 init = async () => {
    let res = await this.http(this.url.pageForm,{});
    if(res.success){
        let list = res.dataList;//默认跳list[0]
      //this.props.history.push('/article/tab1')//路由跳转,类似这种
    }
  }

想实现的是,二级子路由不匹配跳到404去
因为Article里面路由是动态的,所以DefaultLayout进Article的时候只能是'/article',后面的子路由要ajax获取默认第一个,但是article刚进来就会跳到404,
而且404后,有ajax回调的路由跳转页面会在404那里卡住,出不来
两个问题,1.404问题,2.类似这种ajax回调跳转,应该怎么弄

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜未央樱花落 2022-09-18 22:00:13

已解决

<Route path="/article" render={() => <div>测试Route</div>} exact strict></Route>
<Route path='/article/tab1' component={MyList}></Route>
<Route path='/article/tab2' component={MyForm}></Route>
<Redirect from="*" to="/404"></Redirect>

加一个过渡的路由,顺便可以实现loading效果

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文