今日文章目录
- 需求说明
- 过程纪录
- 参考文章
今天来练习Router
切换页面。
ToDoPage
(加入登出钮),新增登入页LoginPage
(加入登入钮)。react-router-dom
四大核心: Router
Switch
Route
Link
Router
: 规范切换页面的影响范围。Link
: 指定切换页面路径位置的其中一个方法。Switch
Route
: Switch
比对Route
路径,路径符合Route
,执行转换页面。直接来看例子:
path
与对应的显示页面component
:const routes = [
{
exact: true,
path: '/',
component: <LoginPage />,
},
{
path: '/toDoPage',
component: <ToDoPage />,
},
{
path: '/loginPage',
component: <LoginPage />,
},
];
App.jsx
(所有页面的集散地)加入Router
Switch
Route
。function App() {
return (
<Router>
<Switch>
{routes.map((item) => (
<Route
key={item.path}
exact={item.exact}
path={item.path}
>
{item.component}
</Route>
))}
</Switch>
</Router>
);
}
export default App;
(补充) exact
: 代表 Switch
在比对路径,指定路径要完全等同path
,才满足条件。
这在针对主页path: '/'
都建议要加,来看看差异:
(一) 没加exact
的话:
如果我页面要指向path: '/toDoPage'
,但Switch
先爬到第一个且符合要求path="/"
,页面就直接指向LoginPage
,就不会看到ToDoPage
。
<Router>
<Switch>
<Route path="/">
<LoginPage />
</Route>
<Route path="/toDoPage">
<ToDoPage />
</Route>
</Switch>
</Router>
(二) 改善的方法1: 把path="/"
条件放在最後一个,这样Switch
就会先找到ToDoPage
。
<Router>
<Switch>
<Route path="/toDoPage">
<ToDoPage />
</Route>
<Route path="/">
<LoginPage />
</Route>
</Switch>
</Router>
(三) 改善的方法2: 把path="/"
加入exact
,Switch
符合100%符合的路径,才会转换。
<Router>
<Switch>
<Route exact path="/">
<LoginPage />
</Route>
<Route path="/toDoPage">
<ToDoPage />
</Route>
</Switch>
</Router>
Link
: 这里to
的路径要对应到上方的path
。<Link to="/loginPage">登入页面</Link>
useHistory()
方法,指定路径切换:export default function LoginPage() {
const history = useHistory();
const handleSubmit = () => {
history.push('/toDoPage');
};
return(
<Button
type="primary"
htmlType="submit"
onClick={handleSubmit}
>
Submit
</Button>
)
}
<<: # Day 17 Physical Memory Model (二)
>>: DAY 13:UML Class diagrams,在抽象世界的具现化宝石
表达式 (Expression) A unit of code that results in a ...
当我们今天要储存个人的信息会使用到object,但仔细思考若有100位的话,是否太麻烦了 let p...
今天介绍步进马达,疑?昨天不是才说过马达吗?昨天的是伺服马达,今天的则是伺服马达 这两者有甚麽不一样...
在载入 bootstrap 的 js之前 我们可以看到 https://getbootstrap.c...
昨天我们针对声音讯号的基本处理做了一些简单的介绍,知道了声音是一连串随着时间变化的讯号所组成的,同时...