React 列表页面传递参数

React 列表进入详情页面

首先安装 react-router-dom (4.0) npm/yarn install react-router-dom
路由跳转配置
列表 父组件 this.props.history.push( { pathname:'/detail', state: data } )
上述的data 为明细的数据
那么详情页面如何接收父组件的数据呢?
const detaildata = this.prop.location.stata.data
注意如果 父组件进入详情页面 this.props.history.push();这个报错时. 引入 import { withRouter } from 'react-router'即可。

部分代码如下

列表组件

import React, { Component } from 'react'
import { withRouter } from 'react-router'; 
 

export class  List extends Component {
    constructor(props) {
        super(props);
        this.state={
            list: [
                {
                
                    "author": "acemarke",
                    "points": 125,
                    "story_text": null,
                    "comment_text": null,
                    "num_comments": 32,
                    "story_id": null,
                    "story_title": null,
                    "story_url": null,
                    "parent_id": null,
                    "created_at_i": 1460737187,
                    "relevancy_score": 6666 
                },
                {
                    
                    "author": "jlongster",
                    "points": 124,
                    "story_text": null,
                    "comment_text": null,
                    "num_comments": 54,
                    "story_id": null,
                    "story_title": null,
                    "story_url": null,
                    "parent_id": null,
                    "created_at_i": 1448479344,
                    "relevancy_score": 6397 
                },
                {
                
                    "author": "myth_drannon",
                    "points": 123,
                    "story_text": null,
                    "comment_text": null,
                    "num_comments": 78,
                    "story_id": null,
                    "story_title": null,
                    "story_url": null,
                    "parent_id": null,
                    "created_at_i": 1499396674,
                    "relevancy_score": 7526 
                }]
        }
     }

    viewdetail (item)  {
        this.props.history.push({ pathname: '/detail', state: {data:item} })
    }
    render() {
        return (
            <div>
                {ths.state.list.map(item => {
                    return (
                            <div key={item.points} onClick={ ()=>this.viewdetail(item)} >
                                <span>{item.author}</span>
                                <span>{item.num_comments}</span>
                                <span>{item.points}</span>
                            </div>
                    )
                })}
            </div>
        )
    }
}

export default withRouter(List)

详情页面

import React, { Component } from 'react'
 

export class DetailList extends Component {
    constructor(props) {
        super(props)
         const data = this.props.location.state.data;
        this.state={
            data:data
        }
    }

    render() {
        return (
            <div>
                <List>
                    <div>
                        {this.state.data.author}    
                    </div>
                </List>
            </div >
        )
    }
}

export default DetailList

转载于:https://www.cnblogs.com/joexin/p/10567711.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值