zoukankan      html  css  js  c++  java
  • react中路由跳转传参push replace

    传递参数的跳转页面

    import React, { Component } from 'react'
    import {Route} from 'react-router-dom'
    import Detail from './Detail'
    
    export default class Message extends Component {
    
        state = {
            messageArr: [
                {id:'01',title:'消息1'},
                {id:'02',title:'消息2'},
                {id:'03',title:'消息3'}
            ]
        } 
    
        go = (data)=>{
            // this.props.history.push('/home/message/detail',data) // push压栈可以后退前进
            this.props.history.replace('/home/message/detail',data)  //replace传值是替换,不可前进后退
        }
        render() {
            const {messageArr} = this.state
            return (
                <div>
                    <ul>
                       {
                           messageArr.map((msgObj)=>{
                             return(
                                 <li key={msgObj.id} onClick={()=>this.go({id:msgObj.id,title:msgObj.title})}>
                                    {msgObj.title}
                                 </li>
                                )
                           })
                       }
                    </ul>
                    <hr/>
                    <Route path="/home/message/detail" component={Detail} />
                </div>
            )
        }
    }

    跳转的目标页面

    import React, { Component } from 'react'
    const DetailData = [
        {id:'01',content:'你好,中国'},
        {id:'02',content:'你好,世界'},
        {id:'03',content:'你好,未来的自己'}
    ]
    
    export default class index extends Component {
        render() {
            const {id,title} = this.props.location.state || {}
            //this.props.location.state 就是传递的参数对象
            const findResult = DetailData.find((detailObj)=>{
                return detailObj.id ===id
            }) || {}
            return (
                <ul>
                    <li>ID:{id}</li>
                    <li>TITLE:{title}</li>
                    <li>CONTENT:{findResult.content}</li>
                </ul>
            )
        }
    }

    还可以利用<Link></Link>标签中的replace属性将路由跳转模式改变成replace模式,默认的路由跳转模式就是push

    import React, { Component } from 'react'
    import {Link,Route} from 'react-router-dom'
    import Detail from './Detail'
    
    export default class Message extends Component {
    
        state = {
            messageArr: [
                {id:'01',title:'消息1'},
                {id:'02',title:'消息2'},
                {id:'03',title:'消息3'}
            ]
        } 
    
        render() {
            const {messageArr} = this.state
            return (
                <div>
                    <ul>
                       {
                           messageArr.map((msgObj)=>{
                             return(
                                 <li key={msgObj.id}>
                                     {/**向路由组件传递state参数*/}
                                     <Link to={{pathname:'/home/message/detail',state:{id:msgObj.id,title:msgObj.title}}}>{msgObj.title}</Link>
                                 </li>
                                )
                           })
                       }
                    </ul>
                    <hr/>
                    {/** search参数无需声明接收 ,正常注册声明*/}
                    <Route path="/home/message/detail" component={Detail} />
                </div>
            )
        }
    }
    不停学习,热爱是源源不断的动力。
  • 相关阅读:
    c网购物车流程图
    NPOI导Excel样式设置
    一个小时快速搭建微信小程序
    ajax实现过程
    JavaWeb结构
    VS常用快捷键
    MVC+三层架构
    JavaScript跨域总结与解决办法[转]
    HTML5是什么?如何鉴定HTML5产品?[转]
    黑盒测试与白盒测试原理
  • 原文地址:https://www.cnblogs.com/ximenchuifa/p/14963336.html
Copyright © 2011-2022 走看看