【发布时间】:2018-09-08 03:26:46
【问题描述】:
我的应用中有这个<Switch> 设置:
<Switch>
<Route exact path="/" component={Home} />
<Route path="/login" component={Login} />
<Route path="/logout" component={Logout} />
<EnsureLoggedIn>
<Route exact path="/user" component={User} />
</EnsureLoggedIn>
<Route component={NotFound} />
</Switch>
EnsureLoggedIn 组件的工作方式对我的问题来说应该不是太重要,尽管我只想提一下它确实使用withRouter HOC 来访问match、location 和history用于路由/重定向目的的道具。
我想要发生的是EnsureLoggedIn 组件仅触发其中匹配的路由。所以在这种情况下,我只想访问/user 来触发它。其他任何东西都应该转到NotFound 路由。
我发现相反的是,只要/、/login 和 /logout 不匹配,EnsureLoggedIn 匹配,并被安装和渲染,并且没有任何东西可以到达 NotFound .
如何获得我想要的行为?或者,我是不是走错了路,我应该以完全不同的方式“保护”我登录的路线吗?
【问题讨论】:
-
EnsureLoggedIn 是直接渲染的,因此不会检查其中的路由。检查如何编写经过验证的路由的副本
标签: reactjs react-router