React 向路由组件传递params参数案例

        实现效果——点击展台1、展台2、展台3时,会显示同一个名为Detail路由组件,但是组件接收的值会不一样:

文件目录:

React 向路由组件传递params参数案例

 Message>index.jsx:

import React, { Component } from 'react'
import { Link, Route } from 'react-router-dom'
import Detail from './Detail';

export default class Message extends Component {
  constructor() {
    super();
    this.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}>
                  {/* 1.向路由组件传递params参数 */}
                  <Link to={`/home/message/detail/${msgObj.id}/${msgObj.title}`}>{msgObj.title}</Link>
                </li>
              )
            })
          }
        </ul>
        <hr />
        {/* 2.声明接收params参数 */}
        <Route path='/home/message/detail/:id/:title' component={Detail} />
      </div>
    )
  }
}

  Message>Detail>index.jsx:

import React, { Component } from 'react'

const DetailData = [
  { id: '01', content: '你好,01' },
  { id: '02', content: '你好,02' },
  { id: '03', content: '你好,03' },
]
export default class Detail extends Component {
  render() {
    //3.接收params参数
    const { id, title } = this.props.match.params//解构赋值
    const findResult = DetailData.find((detailObj) => {
      return detailObj.id === id //如果某一项对象的id和我传过来的Id相等,findResult就等于这一项对象
    })
    return (
      <ul>
        <li>id:{id}</li>
        <li>title:{title}</li>
        <li>content:{findResult.content}</li>
      </ul>
    )
  }
}

 

上一篇:Web API接口规范与测试方法


下一篇:测试平台系列(83) 前置条件支持Redis语句