react路由传值

在上一篇总结了react中路由的基本用法,实现了基本的页面跳转,但这肯定是不够用的,比如说在新闻列表页面,点击某一条新闻,希望页面能跳转到新闻详情页,又该如何实现呢?

首先继续上一篇的项目,添加一个新闻详情页面组件content.js

然后在根组件App.js中配置路由:

最后,修改新闻列表组件News.js

  

当我们点击新闻列表页面的新闻时,页面就会跳转到详情页,但是在实际的运行中,当点击不同的新闻标题时,需要根据新闻id或者其他标识符在详情页请求加载不同的新闻详情,在新闻列表页面,我们可以根据点击事件,知道我们当前添加的这条新闻的id,但是在详情页并不知道,所以需要在进行页面跳转的时候,将当前新闻的id作为参数进行传递,下面就总结如何在react中进行页面间参数传递,主要包括动态路由和get传参两种方式。

动态路由

所谓动态路由,就是将参数放置在路由中,然后在详情页面,根据路由后面带的不同参数,加载不同的新闻详情,主要分为三步操作。

1,在根组件页面配置动态路由

2,在路由跳转页面动态传参

此时,当我们再去点击新闻列表页面的新闻,进行页面跳转的时候,就会在地址栏中看到刚刚点击的新闻的id

3,获取地址栏中传递过来的参数

在需要获取参数的详情页面,使用生命周期函数,获取props对象中的值就可以了,这是获取路由传参的固定写法,最后一个aid取决于在根组件配置路由时的命名。

下面贴出主要代码:

app.js

import React, { Component } from ‘react‘;
import ‘./assets/css/App.css‘;
import { BrowserRouter as Router, Route, Link } from "react-router-dom";
import Home from ‘./components/Home‘;
import News from ‘./components/News‘;
import Content from ‘./components/Content‘;

class App extends Component {
  render() {
    return (
      <div className="App">
        <Router>
          <div>
            <header className="title">
              <Link to="/">首页</Link>
              <Link to="/news">新闻</Link>
            </header>
            <Route exact path="/" component={Home} />
            <Route path="/news" component={News} />
            <Route path="/content/:aid" component={Content} />
          </div>
        </Router>
      </div>
    );
  }
}

export default App;

News.js

import React, { Component } from ‘react‘;
import { Link } from "react-router-dom";

class News extends Component {
    constructor(props) {
        super(props);
        this.state = {
            list:[
                {aid:‘11‘,title:‘我是新闻1111‘},
                {aid:‘222‘,title:‘我是新闻222‘},
                {aid:‘3‘,title:‘我是新闻333‘},
                { aid:‘4‘,title:‘我是新闻4444‘}
            ]
        };
    }
    render() {
        return (
            <div>
                我是新闻组件
                <ul>
                    {
                        this.state.list.map((value,key)=>{
                            return (
                                <li key={key}>
                                    <Link to={`/content/${value.aid}`}>{value.title}</Link>
                                </li>
                            )
                        })
                    }
                </ul>
            </div>
        );
    }
}

export default News;

Content.js

import React, { Component } from ‘react‘;

class Content extends Component {
    constructor(props) {
        super(props);
        this.state = {  };
    }
    componentDidMount(){
        console.log(this.props.match.params.aid);  

    }
    render() {
        return (
            <div>
                我是详情页面
            </div>
        );
    }
}

export default Content;

get传参

使用get传参的时候,不要配置动态路由,只需要在进行页面跳转的时候将需要传递的参数接在路由后面就可以了。

app.js

News.js

此时,当我们点击新闻列表跳转到详情页面时,地址栏中就已经可以看到传递过来的参数了

我们在新闻详情页面获取地址栏中的参数。

Content.js

此时肯定时不能直接使用了,我们可以通过js来处理获取到的值,变成我们需要的格式,也可以借助第三方工具来处理,在使用第三方工具的时候,主要分为以下几步:

1,首先在项目根目录进行安装:npm install url

2,在需要使用的组件里面引入工具:import url from ‘url‘;

3,在生命周期函数中使用:

下面贴出相关页面代码:

News.js

import React, { Component } from ‘react‘;
import { Link } from "react-router-dom";

class News extends Component {
    constructor(props) {
        super(props);
        this.state = {
            list:[
                {aid:‘11‘,title:‘我是新闻1111‘},
                {aid:‘222‘,title:‘我是新闻222‘},
                {aid:‘3‘,title:‘我是新闻333‘},
                { aid:‘4‘,title:‘我是新闻4444‘}
            ]
        };
    }
    render() {
        return (
            <div>
                我是新闻组件
                <ul>
                    {
                        this.state.list.map((value,key)=>{
                            return (
                                <li key={key}>
                                    <Link to={`/content?aid=${value.aid}`}>{value.title}</Link>
                                </li>
                            )
                        })
                    }
                </ul>
            </div>
        );
    }
}

export default News;

Content.js

import React, { Component } from ‘react‘;
import url from ‘url‘;

class Content extends Component {
    constructor(props) {
        super(props);
        this.state = {  };
    }
    componentDidMount(){
        var query=url.parse(this.props.location.search,true).query;
        console.log(query)
        console.log(query.aid)
    }
    render() {
        return (
            <div>
                我是详情页面
            </div>
        );
    }
}

export default Content;

原文地址:https://www.cnblogs.com/yuyujuan/p/10129098.html

时间: 2024-08-30 16:06:00

react路由传值的相关文章

react之传递数据的几种方式props传值、路由传值、状态提升、redux、context

react之传递数据的几种方式 1.父子传值 父传值:<子的标签 value={'aaa'} index={'bbb'}></子的标签> 子接值:<li key={this.props.index}>{this.props.value}</li> 不止可以传值也可以传递方法: 父:方法={this.方法} 子:{this.props.方法.bind(this)} 传来的参数子组件可以使用,此处用{value,index}等解构赋值省去this.props 此

我的一个React路由嵌套(多级路由),路由传参之旅

在上一篇react路由之旅中,我们简单地配置了react,进行了react路由及相关知识的学习,引入以及实现一个局部跳转的功能,接下来就是深入学习路由的嵌套以及传参,这是工作中主要用要的. 我的react已经配置了redux(见我的redux之旅),所以这是在引入的插件里做的演示. 从App组件跳转到NewRoute组件(需要简单的路由跳转,点击自己预习) (1)新建一个demo: 这里使用了render方式在一个文件中模拟了多个组件的效果 代码只为讲解使用在真实开发中尽量不要这样写代码的. 这

ionic路由传值

ionic路由传值 app.js ===================================== //新建工作任务.state(‘app.newTask’, angularAMD.route({url: ‘/newTask?:userid:username:img:isclear:arr1:arr2:arr3′,//cache:’false’,views: {‘menuContent’: {templateUrl: ‘app/templates/oa/NewTask.html’,co

angularjs路由传值$routeParams

AngularJS利用路由传值, 1.导包 <script src="angular.min.js"></script> <script src="angular-route.js"></script> 2.依赖注入ngRoute var myapp=angular.module("myapp",["ngRoute"]); 3.配置路由 myapp.config(function

react路由配置(未完)

React路由 React推了两个版本 一个是react-router 一个是react-router-dom 个人建议使用第二个 因为他多了一个Link组件 Npm install react-router-dom 1.引入 上边两种方法都行,需要注意的是第二种,下边的便签的写成<HashRouter></HashRouter> 2.如何使用 3.路由传参 原文地址:https://www.cnblogs.com/5b4cn/p/9393527.html

React 路由

React 路由 React 推出两个版本 一个是 react-router 一个是 react-router-dom 这里使用的是 react-router-dom  因为该方法多了一个  Link 组件 1. 在创建好 React 环境的基础上 下载 react-router-dom npm install react-router-dom 2. 引入  react-router-dom 注意 :  在引入时如果第一个参数只有 HashRouter 时  那么在模板中标签名为<HashRou

vue中this.$router.push()路由传值和获取的两种常见方法

1.路由传值   this.$router.push() (1) 想要导航到不同的URL,使用router.push()方法,这个方法会向history栈添加一个新纪录,所以,当用户点击浏览器后退按钮时,会回到之前的URL (2)当点击 <router-link> 时,这个方法会在内部调用,即点击 <router-link :to="..."> 等同于调用 router.push(...) a)      声明式:<router-link :to=&quo

16.动态路由传值和get传值

1.动态路由传值 1.在components目录下新建vContent.vue组件 <template> <div> <h2>{{msg}}</h2> </div> </template> <script> export default { data () { return { msg:'详情组件', } }, methods:{ }, mounted(){ console.log(this.$route.params);

我的一个react路由之旅(步骤及详图)

今天开始react一个重要部分的xiao~习,路由~(过程截图,最后附代码) 以下代码只能骗糊涂蛋子,没错,就是我自己,不要打算让我敲出多高级的东西~ 理论性知识几乎没有,请不要打算让我给你说原理啥的,原理性的东西,网上很多,我现在搬砖学习很开心,勿忘初心~ (1)首先,你确定你安装了react环境,这第一步难度系数1,菜鸟级别的不演示了 (2)接下来,你要是用react路由,需要安装路由插件 1 npm install react-router-dom --save-dev //这里可以使用c