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



最后

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

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

相关文章
|
2月前
uView queryParams 对象转URL参数
uView queryParams 对象转URL参数
31 0
|
2月前
|
JavaScript
vue截取URL中的参数
vue截取URL中的参数
35 0
|
2月前
|
分布式计算 DataWorks 关系型数据库
DataWorks数据源问题之参数“连接Url”如何解决
DataWorks数据源是指DataWorks中配置的用于数据集成的外部数据源;本合集将讲解如何在DataWorks中配置和管理数据源,以及处理数据源连接和集成过程中的问题。
|
2月前
BurpSuite8.2 -- 查找包含id参数的URL
BurpSuite8.2 -- 查找包含id参数的URL
33 1
|
2月前
|
前端开发
[牛客网-前端大挑战QD2] 获取url参数
[牛客网-前端大挑战QD2] 获取url参数
36 0
|
2月前
feign使用url参数传参@SpringQueryMap使用
feign使用url参数传参@SpringQueryMap使用
66 0
|
13天前
|
JavaScript 前端开发 数据格式
URL编码【详解】——Javascript对URL进行编码解码的三种方式的区别和使用场景,axios请求拦截器中对get请求的参数全部进行URL编码
URL编码【详解】——Javascript对URL进行编码解码的三种方式的区别和使用场景,axios请求拦截器中对get请求的参数全部进行URL编码
15 0
|
14天前
|
JavaScript
js 获取并解析 url 中参数的三种方法
js 获取并解析 url 中参数的三种方法
9 0
|
18天前
|
文字识别 算法 API
视觉智能开放平台产品使用合集之在调用接口传入的图片URL参数,文件在本地或者非上海地域OSS链接,该怎么办
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
28天前
|
Web App开发 移动开发 安全
如何做到修改 url 参数页面不刷新
如何做到修改 url 参数页面不刷新