将动态 link 传递给 table 时出现问题
Problems passing a dynamic link to the table
我在这里使用 react-bootstrap-table,但其他所有选项都很划算。我在将 Link 插入 table 时遇到了很大的问题。我几乎尝试了一切。我从服务器获取数据,因此我在其上进行映射并呈现结果。但我需要能够点击其中一个并获取点击的值并将其传递给第二个组件。我可以在不使用 react-bootstrap-tables 的情况下做到这一点,但我非常喜欢它们,所以我想知道这是否有可能,如果有的话,你能帮帮我吗?这是一段重要的代码。
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>
解决方案简单明了现在,但当时让我很头疼:)
我做的是,我使用了一个叫做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>
)});
我在这里使用 react-bootstrap-table,但其他所有选项都很划算。我在将 Link 插入 table 时遇到了很大的问题。我几乎尝试了一切。我从服务器获取数据,因此我在其上进行映射并呈现结果。但我需要能够点击其中一个并获取点击的值并将其传递给第二个组件。我可以在不使用 react-bootstrap-tables 的情况下做到这一点,但我非常喜欢它们,所以我想知道这是否有可能,如果有的话,你能帮帮我吗?这是一段重要的代码。
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>
解决方案简单明了现在,但当时让我很头疼:)
我做的是,我使用了一个叫做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>
)});