React-Router-URL参数

简介: React-Router-URL参数

前言


React Router 是 React 应用中常用的路由管理库,而 URL 参数则是它的一个关键概念。URL 参数允许您在路由之间传递数据,从而使您的应用程序更灵活和交互性更强。




路由参数传递


  • URL 参数,例如:?key=value&key=value

更改 App.js 的 Home 组件的路由跳转规则:

import React from 'react';
import Home from './components/Home'
import About from './components/About'
import Other from './components/Other'
import User from './components/User'
import Login from './components/Login'
import Discover from './components/Discover'
import {NavLink, Route, Switch, withRouter} from 'react-router-dom';
class App extends React.PureComponent {
    render() {
        return (
            <div>
                <NavLink to={'/home?name=yangbuyiya&age=18'} activeStyle={{color: 'red'}}>Home</NavLink>
                <NavLink to={'/about'} activeStyle={{color: 'red'}}>About</NavLink>
                <NavLink to={'/user'} activeStyle={{color: 'red'}}>User</NavLink>
                <NavLink to={'/discover'} activeStyle={{color: 'red'}}>广场</NavLink>
                <button onClick={() => {
                    this.btnClick()
                }}>
                    广场
                </button>
                <Switch>
                    <Route exact path={'/home'} component={Home}/>
                    <Route exact path={'/about'} component={About}/>
                    <Route exact path={'/user'} component={User}/>
                    <Route exact path={'/login'} component={Login}/>
                    <Route path={'/discover'} component={Discover}/>
                    <Route component={Other}/>
                </Switch>
            </div>
        )
    }
    btnClick() {
        this.props.history.push('/discover');
    }
}
export default withRouter(App);

更改 Home.js 组件的内容,处理 URL 传递过来的参数:

import React from 'react';
class Home extends React.PureComponent {
    constructor(props) {
        super(props);
        let query = this.props.location.search.substring(1);
        query = query.split('&');
        let obj = {};
        query.forEach((item) => {
            let temp = item.split('=');
            obj[temp[0]] = temp[1];
        });
        console.log(obj);
    }
    render() {
        return (
            <div>Home</div>
        )
    }
}
export default Home;


  • 路由参数(动态路由),例如:/path/:key

更改 App.js:

<NavLink to={'/about/yangbuyiya/18'} activeStyle={{color: 'red'}}>About</NavLink>


更改 About.js:

import React from 'react';
class About extends React.PureComponent {
    constructor(props) {
        super(props);
        console.log(this.props.match);
        console.log(this.props.match.params);
    }
    render() {
        return (
            <div>About</div>
        )
    }
}
export default About;


  • 对象

更改 App.js:

render() {
    const obj = {
        name: 'yangbuyiya',
        age: 18,
        gender: 'man'
    };
    return (
        <div>
            <NavLink to={'/home?name=yangbuyiya&age=18'} activeStyle={{color: 'red'}}>Home</NavLink>
            <NavLink to={'/about/yangbuyiya/18'} activeStyle={{color: 'red'}}>About</NavLink>
            <NavLink to={{
                pathname: '/user',
                search: '',
                hash: '',
                state: obj
            }}
                     activeStyle={{color: 'red'}}
            >
                User
            </NavLink>
            <NavLink to={'/discover'} activeStyle={{color: 'red'}}>广场</NavLink>
            <button onClick={() => {
                this.btnClick()
            }}>
                广场
            </button>
            <Switch>
                <Route exact path={'/home'} component={Home}/>
                <Route exact path={'/about/:name/:age'} component={About}/>
                <Route exact path={'/user'} component={User}/>
                <Route exact path={'/login'} component={Login}/>
                <Route path={'/discover'} component={Discover}/>
                <Route component={Other}/>
            </Switch>
        </div>
    )
}

更改 User.js:

constructor(props) {
    super(props);
    this.state = {
        isLogin: true
    }
    console.log(this.props.location);
    console.log(this.props.location.state);
}



官方文档地址:https://reactrouter.com/web/api/Link



最后

本期结束咱们下次再见👋~

🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗

相关文章
|
6月前
uView queryParams 对象转URL参数
uView queryParams 对象转URL参数
65 0
|
6月前
|
JavaScript
vue截取URL中的参数
vue截取URL中的参数
68 0
|
2月前
封装react-antd-table组件参数以及方法如rowSelection、pageNum、pageSize、分页方法等等
文章介绍了如何封装React-Antd的Table组件,包括参数和方法,如行选择(rowSelection)、页码(pageNum)、页面大小(pageSize)、分页方法等,以简化在不同表格组件中的重复代码。
61 0
|
2月前
|
前端开发 JavaScript
前端JS截取url上的参数
文章介绍了两种前端JS获取URL参数的方法:手动截取封装和使用URLSearchParams。
48 0
|
3月前
|
开发框架 前端开发 .NET
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
|
3月前
|
Java
JAVA 获取 URL 指定参数的值
JAVA 获取 URL 指定参数的值
46 0
|
4月前
|
JavaScript 前端开发 数据格式
URL编码【详解】——Javascript对URL进行编码解码的三种方式的区别和使用场景,axios请求拦截器中对get请求的参数全部进行URL编码
URL编码【详解】——Javascript对URL进行编码解码的三种方式的区别和使用场景,axios请求拦截器中对get请求的参数全部进行URL编码
237 0
|
4月前
|
JavaScript
js 获取并解析 url 中参数的三种方法
js 获取并解析 url 中参数的三种方法
428 0
|
5月前
|
文字识别 算法 API
视觉智能开放平台产品使用合集之在调用接口传入的图片URL参数,文件在本地或者非上海地域OSS链接,该怎么办
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
5月前
|
Web App开发 移动开发 安全
如何做到修改 url 参数页面不刷新
如何做到修改 url 参数页面不刷新

热门文章

最新文章