将动态链接传递给表时出现问题

时间:2018-04-12 17:34:35

标签: reactjs react-router react-redux react-bootstrap-table

我在这里使用 react-bootstrap-table ,但其他所有选项都很划算。我在链接到表时遇到了很大的问题。我几乎尝试了一切。我从服务器获取数据,因此我将其映射并呈现结果。但是我需要能够单击其中一个并获取该单击的值并将其传递到第二个组件。我能够在不使用react-bootstrap-table的情况下做到这一点,但我非常喜欢它们,所以我想知道这是否可能,如果是的话,请你帮助我。这是一段重要的代码。

sortedReports是一个数组。

let test = sortedReports.map(item => {
        return (<Link to={{ pathname: '/reports/details', state: { item } }}>
                    <PieChart size="21"/>
                </Link>
                )
        });

return (
        <div className="container">
        <div>
        <header style={{textAlign: 'center'}}>
            <h4>The complete list of reports</h4>
            <p style= {{ color: '#48C6EF' }}>Details available by clicking on an icon </p>
            </header>
            <hr />
        </div>

<div className="col-md-10">
        <BootstrapTable
          data={ sortedReports }
          pagination>
          <TableHeaderColumn dataField='year'>Year</TableHeaderColumn>
          <TableHeaderColumn dataFormat = { this.colFormatter} dataField='month'>Month</TableHeaderColumn>
          <TableHeaderColumn dataField='ukupno_plata'>Full salary</TableHeaderColumn>
          <TableHeaderColumn dataField='bruto_ukupno' isKey={true}>Full gross</TableHeaderColumn>
          <TableHeaderColumn dataField='bruto_plata'>Bruto</TableHeaderColumn>
          <TableHeaderColumn dataField='neto_plata'>Neto</TableHeaderColumn>          
          <TableHeaderColumn dataField='topli_obrok'>Neto</TableHeaderColumn>                    
          <TableHeaderColumn dataField='doprinosi'>Taxes</TableHeaderColumn> 
          <TableHeaderColumn **dataField={test}**>Details</TableHeaderColumn>

1 个答案:

答案 0 :(得分:0)

该解决方案简单易行,现在,但当时让我头疼:)

我所做的是,我使用了一个名为react-feather的库来显示图标,在其周围包裹一个<Link />标签,然后传入相关数据以将其传递给下一个组件。在下一个组件中,我这样访问它: const { data} = this.props.history.location.state;

const {yearsData, monthsData, netData, grossData, mealsData, taxData, handSalaryData, employeeNum} = this.state.currentSession;

    // Preparing the data for rendering
    const dataTable = yearsData
        .map((item, idx) => {
            let yearX = item;
            let monthX = monthsData[idx];
            let dev = {};
            data.relMonth = monthX;
            data.relYear = yearX;
            return (
                <tr key={yearX + monthX}>
                    <td>{item}</td>
                    <td>{monthsData[idx]}</td>
                    <td>{netData[idx]}</td>
                    <td>{grossData[idx]}</td>
                    <td>{mealsData[idx]}</td>
                    <td>{taxData[idx]}</td>
                    <td>{handSalaryData[idx]}</td>
                    <td>{employeeNum[idx]}</td>

                   // Here is where the 'magic' happens

                    <td className="table-actions">
                        <Link to={{ pathname: `/reports/details`, state: { data } }}>
                            <Activity size="20"/>
                        </Link>
                    </td>
                </tr>
            )});