前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >React路由学习

React路由学习

作者头像
biaoblog.cn 个人博客
发布2022-08-11 18:53:25
7710
发布2022-08-11 18:53:25
举报

1.安装react-router-dom

代码语言:javascript
复制
$ npm i react-router-dom --save

2.在页面进行引入

代码语言:javascript
复制
import {BrowserRouter as Router,Route,Link} from 'react-router-dom'

3.编写两个无状态的路由组件

// 声明路由组件 一个func 相当于是一个路由组件 

// 这里是无状态路由的写法 实际工作中会把路由组件单独的写成一个js来进行引入

代码语言:javascript
复制
 function Index (){
     return <h2>Jspang.com</h2>
 }
 function List (){
     return <h2>List-page</h2>
 }

4.创建控制路由的组件

代码语言:javascript
复制
function AppRouter (){
    return(
        <Router>
            <ul>
                {/* Link 为路由的跳转 类似于a标签 */}
                <li><Link to='/'>首页</Link></li>
            </ul>

            {/* exact 为精准定位 必须为/ 才能进行匹配 
                Route 为路径的指引
                component 为上面绑定的组件
                path 为路径
            */}
            <Route path="/" exact component = {Index} />
            {/* :id 设置规则 不传不跳转 */}
            <Route path="/list/:id"  component = {List} />
            <Route path="/home/"  component = {Home} />
        </Router>
    )
}
// 暴露出去
export default AppRouter;

路由的URL传参

1.在路由指引组件上声明传参规则,不传则不会跳转

代码语言:javascript
复制
<Route path="/list/:id"  component = {List} />

2.在跳转过来的页面接收值

// 在生命周期中接收 路由传递的值

代码语言:javascript
复制
 componentDidMount(){
let ReadID = this.props.match.params.id
        console.log(ReadID)
}

3.重新设置state的值可以在声明周期中使用this.setState({}),前提是设置的数据需要在state中声明好

4.路由的重定向 引入RediRect

代码语言:javascript
复制
import {Link,Redirect } from 'react-router-dom'
编程式重定向
this.props.history.push('/home/')
标签重定向 在render最外层标签中写入
<Redirect to="/home/" /> 

路由的嵌套

1.在子路由中建立孙路由直接引入即可

2.根据后台返回的数组来动态渲染路由

模拟一组数据

代码语言:javascript
复制
    let routeConfig =[
        {path:'/',title:'博客首页',exact:true,component:Index},
        {path:'/video/',title:'视频教程',exact:false,component:Video},
        {path:'/work/',title:'职场技能',exact:false,component:Work}
      ]
    return(
        <Router>
            <div className="mainDiv">
                <div className="leftNav">
                    <h3>一级导航</h3>
                    <ul>
                        {
                            routeConfig.map((item,index)=>{
                                return (
                                    <li key={index}>
                                        <Link to={item.path}>{item.title}</Link>
                                    </li>
                                )
                            })
                        }
                    </ul>
                </div>
            </div>

            <div className="rightMain">
                {
                    routeConfig.map((item,index)=>{
                        return (
                            <Route path={item.path}  
                                   exact={item.exact} 
                                   component={item.component} />
                        )
                    })
                }
            </div>
        </Router>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.安装react-router-dom
  • 2.在页面进行引入
  • 3.编写两个无状态的路由组件
  • 4.创建控制路由的组件
  • 路由的URL传参
    • 1.在路由指引组件上声明传参规则,不传则不会跳转
      • 2.在跳转过来的页面接收值
        • 3.重新设置state的值可以在声明周期中使用this.setState({}),前提是设置的数据需要在state中声明好
          • 4.路由的重定向 引入RediRect
          • 路由的嵌套
            • 1.在子路由中建立孙路由直接引入即可
              • 2.根据后台返回的数组来动态渲染路由
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档