将映射的数据从api传递到另一个组件

时间:2019-06-13 10:25:45

标签: reactjs react-router-dom array.prototype.map

所以我有从componentDidMount中的api获取的数据,然后在渲染器中对其进行映射。可以说地图返回了4个对象。如何创建一个按钮单击事件来捕获特定对象的数据,然后将其沿路由传递到另一个组件?

代码:


clickEvent(){
???
}

this.example = this.state.data.slice(1).map((data, key) =>

<div key={item.Id}>
<div>{data.dataIWantToPass}</div>
<Link to='/next_component_path' onClick={clickEvent}}>Click</Link>
</div>

所以可以说上面返回了4个对象。我想要第三个,当单击链接以传递其数据时。

3 个答案:

答案 0 :(得分:0)


clickEvent(dataUWantToPass){
    <NewComponent dataPassed={dataUWantToPass} />
}

this.example = this.state.data.slice(1).map((data, key) =>
    <div key={data.Id}>
        <div>{data.dataIWantToPass}</div>

        //Link is a react-router-dom component, this helps you to redirect to other component (to which you have added the route for
        <Link to='/next_component_path'>                        
            <button onClick={()=>this.clickEvent(data.dataIWantToPass)} value="Click"/>
        </Link>
    </div>
))

您可以作为道具在NewComponent中接收数据。 如果要进行检查,则可以在NewComponent中将componentWillReceiveProps()方法编写为:

componentWillReceiveProps(reveivedProps){
    console.log(reveivedProps);
}

答案 1 :(得分:0)

好的,我已经解决了这一问题,将注释中的各个部分拼凑在一起,因此,谢谢您的贡献。解决方法如下:

在链接标签上,我这样做:

<Link to={{ pathname: '/path', query:{passed_id: data.id} }}></Link>

然后在路径路由到的组件上:

this.setState({passed_id: this.props.location.query.passed_id});

这使我可以访问正在传递的数据,在本例中为ID。现在,我只需要弄清楚如何将该ID与我也通过(通过本地存储)传递的循环数据进行比较,并对其进行映射。我想另一个问题。

答案 2 :(得分:-1)

您需要使用redux。这使您可以将数据存储在全局应用程序存储中,并从订阅该存储的任何组件中获取数据。如今,几乎每个React项目都需要Redux来管理整个应用程序中的数据