当且仅当某些条件满足时,如何进行条件路由,才应进行路由。例如,仅当用户输入正确的凭据时,登录才应该成功,并且用户应该能够看到欢迎页面。
如果我们直接点击某些网址(例如“ localhost:8080 /
welcome”),不应将其导航到欢迎页面,则仅在登录欢迎页面后才能看到。我怎么能做到这一点,任何人都可以帮助我..谢谢你。
App.js
import React, { Component } from 'react';
import Header from './Header';
class App extends Component{
render(){
return(
<div>
<Header />
</div>
);
}
}
export default App;
Header.js
import React, { Component } from 'react';
import {Link} from 'react-router-dom';
import Login from './Login';
import SignUp from './SignUp';
class Header extends Component{
render(){
return(
<div>
<nav class="navbar navbar-default">
<div class="container-fluid">
<ul class="nav navbar-nav">
<li><Link to={Login}>Login</Link></li>
<li><Link to={Login}>SignUp</Link></li>
</ul>
</div>
</nav>
</div>
);
}
}
export default Header;
AllRoutes.js
import React, { Component } from 'react';
import { Switch, Route } from 'react-router-dom';
import Login from './Login';
import SignUp from './SignUp';
import Welcome from './Welcome';
class AllRoutes extends Component{
render(){
return(
<Switch>
<Route exact path="/login" component={Login} />
<Route exact path="/signup" component={SignUp} />
<Route exact path="/Welcome" component={Welcome} />
</Switch>
);
}
}
export default AllRoutes;
Welcome.js
import React, { Component } from 'react';
class Welcome extends Component{
render(){
return(
<div>
<h2>Welcome to MainPage..</h2>
</div>
);
}
}
export default Welcome;
为了帮助回答您的问题,我想您可能还需要询问该路线应 如何
被封锁。通过上面的示例,您还没有一种机制可以帮助回答“我是否可以访问此页面”问题。这可能来自state
,redux或其他确定用户是否已登录的方法。
由于react-router
只是普通的React(我最喜欢的部分之一!),所以您拥有所有可用的工具,可以有条件地显示React应用程序的 任何
部分。
这是几个示例,说明如何实现此目标(绝不是穷举。要有创造力!这完全取决于您的要求和所使用的工具)
class AllRoutes extends Component{
render(){
return(
<Switch>
<Route exact path="/login" component={Login} />
<Route exact path="/signup" component={SignUp} />
{ this.state.authenticated &&
<Route exact path="/Welcome" component={Welcome} />
}
</Switch>
);
}
}
我最喜欢的方法之一就是创建一个ProtectedRoute
组件
class ProtectedRoute extends Component {
render() {
const { component: Component, ...props } = this.props
return (
<Route
{...props}
render={props => (
this.state.authenticated ?
<Component {...props} /> :
<Redirect to='/login' />
)}
/>
)
}
}
class AllRoutes extends Component {
render() {
return (
<Switch>
<Route path='/login' component={Login} />
<ProtectedRoute path='/welcome' component={Welcome} />
</Switch>
)
}
}
尽管我没有包括如何state.authenticated
设置的任何特定逻辑,但这可能来自任何地方(决不是来自state
)。尽最大努力回答“如何确定用户是否已通过身份验证”的问题,并将该机制用作处理路由身份验证的手段。
为什么如果我将这个简单的谓词赋给'func'而不是(在我的情况下总是false),我会在忽略条件时获得所有元素,而不是获得0个元素呢? 我想是因为谓词中没有考虑SettingItemModel对象,但我不确定。
我的程序是告诉输入的一年是否是符合这些要求的闰年: a型年:2011年不是闰年。 a型年:2012年是闰年。 类型a年:1800年该年不是闰年。
在我的程序中,我需要检查变量是否等于1、2或3,并根据结果执行不同的方法: 这段代码非常简单和基本,但我真的不喜欢它。当然,我可以使用开关条件,但以我的拙见,它只会以不同的方式显示相同的基本功能。 我的问题是:有没有一种优雅的、可扩展的方式来实现功能? 仅供参考,我已经红了这篇文章,但我没有找到适合我问题的答案。
自定义地图上两点,绘制出两点直接的路径。使用MKPolyline绘制路径,支持长按(long press)地图自定义两点坐标。 作者说:参照http://code.google.com/p/ashiphone/downloads/detail?name=MapWithRoutes.zip
实现的简单A*算法寻路Demo。A*寻路一般可用于游戏当中计算人物走动的线路。Demo测试方法是,迷宫中黑点是障碍物,绿点是可以走过的点,红点是起始点,然后点击任意绿点会生成一个灰色点,设置为终点。点击屏幕右上角的“移动按钮”,红点便开始了它的A*寻路之旅。 [Code4App.com]
react中使用antd的组件运行报错Error: Invalid hook call和Uncaught TypeError: Cannot read properties of null (reading 'useContext') 网上搜索该问题,未能解决。希望得到解决方案。