美文网首页
React 路由传参方法

React 路由传参方法

作者: Fortune_Cookie | 来源:发表于2018-12-27 21:39 被阅读0次

在写react-router-dom 的demo时,需要将商品信息传递给子路由组件,即将Products组件的商品信息传给Product组件进行渲染。

Products路由组件结构如下图

import React from 'react'

import {
   Link,
   Route
} from 'react-router-dom'
import Product from './Product'


const Products = (({match}) => {

// 需要将下表数据传给Product组件
const productsData = [
    {id:1,name:'iPhone',price:500,status:'stocked'},
    {id:2,name:'MiPhone',price:400,status:'stocked'},
    {id:3,name:'SumSung',price:300,status:'unstocked'}
]

const linkList = productsData.map((product) =>
        <li key={product.id}>
            <Link to={`${match.url}/${product.id}`}>
                {product.name}
            </Link>
        </li>
    )

return (
    <div className="products">
        {console.log('Products-match')}
        {console.log(match)}
        <ul>
            {linkList}
        </ul>
        
        {/*将Products路由的数据全部传给Product路由组件*/}
        <Route path={`${match.url}/:productId`} render={(props) =>(<Product data={productsData} {...props} />) } />
        <Route exact path={match.url} render={() => <h2>select a product please!</h2>} />
    </div>
  )
})

export default Products

这里要将productsData传递给Product路由组件中方法:render里面渲染时 直接返回 Product组件 并且将Products的数据传递给子路由组件,这里使用的时ES6的扩展运算符{...props},如果不具体传值(比如这里的 data={productsData}),props里面没有productsData

<Route 
            path={`${match.url}/:productId`} 
            render={(props) =>(<Product data={productsData} {...props} />) } 
        />

Product组件结构如下

import React from 'react'

const Product = ((props) => {
var product = props.data.find(p => p.id.toString() === props.match.params.productId)
var str;
if(product){
    str =   <div className="details">
        <h3>{product.name}</h3>
        <h3>{product.price}</h3>
        <h3>{product.status}</h3>
    </div> 
} else {
    str = <h3>No exiting!</h3>
}
return (
    <div className="product">
        {console.log('Product-props:')}
        {console.log(props)}
        {str}
    </div>
)
})

export default Product

Products传给子路由组件Productprops的信息如下:

Props信息

相关文章

  • React 路由传参方法

    在写react-router-dom 的demo时,需要将商品信息传递给子路由组件,即将Products组件的商品...

  • Next.js 跳转传参并接收接参

    介绍路由传参,接参使用方法 传参 + 跳转页面接收参数 动态路由传参 + 跳转页面接收参数创建动态路由在pag...

  • vue路由传参.md

    两种传参方法 1.命名路由传参(name, params方式) 2.路由路径传参(path, query方式...

  • react 事件绑定和传参

    使用react,绕不开事件绑定和传参,react事件绑定的方法有以下几种。 方法一: 传参:onClick={th...

  • React路由传参

    1.params 优势 : 刷新地址栏,参数依然存在缺点:只能传字符串,并且,如果传的值太多的话,url会变得长而...

  • React路由传参

    1.params xxx...

  • react路由传参

    list页->detail页方法一:路由参数**路由导航:用“/” 路由map: 加"/:id" detail页获...

  • react路由传参

    背景,找到一篇博文写的关于路由传参,但是该片博文中有一些错误的信息,所以在下重新整理了一下内容这是参考的博文地址h...

  • react 路由传参

  • Vue实战第二天

    路由组件传参 动态路由传参 静态路由传参 函数传参htm5 history 模式 设置通用路由,找不到页面跳转自定...

网友评论

      本文标题:React 路由传参方法

      本文链接:https://www.haomeiwen.com/subject/cfadlqtx.html