首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React Router - 404页面首先在受保护的路由上呈现

React Router - 404页面首先在受保护的路由上呈现
EN

Stack Overflow用户
提问于 2019-06-28 05:25:42
回答 2查看 315关注 0票数 2

我已经保护了/control-panel页面,但当我转到/control-panel页面404时,页面首先呈现,然后加载页面,你知道如何修复吗?

代码:

代码语言:javascript
复制
  <Switch>
    <Route exact path='/' component={HomePage} />
    <Route exact path='/help' component={FAQ} />

    {admin ? <PrivateRoute authed={userSignedIn} path="/control-panel" exact component={ControlPanel} /> : null}

    <Route component={NoMatch} />
  </Switch>

更新为:

代码语言:javascript
复制
{!my_protected_urls.includes(window.location.pathname) && <Route component={NoMatch} />}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-28 07:05:31

这是因为在执行此代码之前,admin的值不为真。

正如我在我的评论中指出的,这取决于你如何获得admin的价值

然而,对于这种情况,一种更容易的解决方法是使用pathname

试试这个:

代码语言:javascript
复制
<Switch>
    <Route exact path='/' component={HomePage} />
    <Route exact path='/help' component={FAQ} />

    {admin ? <PrivateRoute authed={userSignedIn} path="/control-panel" exact component={ControlPanel} /> : null}

    {window.location.pathname!=='/control-panel' && <Route component={NoMatch} />}
  </Switch>

这应该可以解决您的问题。干杯!!

票数 0
EN

Stack Overflow用户

发布于 2019-06-28 05:44:44

确保在路由器初始化之前设置了'admin‘值,然后尝试此操作。

代码语言:javascript
复制
<Switch>
  <Route exact path='/' component={HomePage} />
  <Route exact path='/help' component={FAQ} />

  {admin ? <PrivateRoute authed={userSignedIn} path="/control-panel" exact component={ControlPanel} /> : null}

  <Route component={NoMatch} />
</Switch>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56798650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档