练手react-router
基本标签的使用
- 在index.js中, render的对象需要用
<BrowserRouter>
包裹:
1 | import {BrowserRouter, HashRouter} from 'react-router-dom'; |
- 导航标签:
1 | import {NavLink, Switch, Route, Redirect}} from "react-router-dom"; |
- 切换标签, 路由标签, 重定向标签
1 | {/*可切换的路由组件, 只显示其中一个*/} |
自定义NavLink标签样式
1 | <NavLink to="/faq" activeClassName="selected"> |
修改activeClassName (该属性表示被激活的NavLink被添加的类名, 默认 为 ‘active’ , 因此被BS4修饰)
接着可以在index.css中对selected
对象进行修饰.
对于css多文件修饰对象, 可以在属性中增加
!important
防止被覆盖!.selected{ color: palevioletred ; } <!--4-->
其中...
运算符十分关键, 因为你不知道外部传入了多少个属性, 因此没法在props中一个个声明. 但是可以直接全部展开并传入NavLink中.
1 | <MyNavLink className="list-group-item" to='/about' >About</MyNavLink> |
嵌套路由
没什么难的, 复习一下. 路由的核心:
网页的入口:
NavLink to='/home/news'
需要动态显示的部分:
<Switch></Switch>
网页路径 与 显示部件的映射关系:
<Route path='/home/message' component={Message}/>
路由传参 this.props.match.params
- 路由参数
:paramname
1 | <Route path='/home/message/message-detail/:id' component={MessageDetail}> |
组件取参
this.props.match.params
中包含url中的参数
- a href是普通链接, 只有NavLink才是路由链接. 有时候出现点击链接后boostrap样式丢失, 可能是因为点的是普通链接的原因.
小技巧
- 对数组的find方法, 提供一个判断函数!
1 | const massage = massages.find((m) => m.id == id); //匹配第一个未true的数组元素 |