Tam*_*jid 6 onclick reactjs react-props react-table
嗨,我正在尝试设置我的反应应用程序,以便当您单击反应表中行项目中的按钮时,该行中的数据将传递到另一个组件。目前我只是想在 console.log 中记录正确的数据,但不确定如何根据点击传递反应表行数据。我怎样才能做到这一点?谢谢
我的虚拟数据与按钮(显示详细视图)一起存储在状态中,我想触发通过 onclick 的数据:
columns: [
{
Header: "First Name",
accessor: "fname"
},
{
Header: "Last Name",
accessor: "lname"
},
{
Header: "Employee Group",
accessor: "egroup"
},
{
Header: "Date of Birth",
accessor: "dob"
},
{
Header: "",
id: "id",
Cell: ({ row }) => (
<button onClick={e => this.handleShow()}>
Detailed View
</button>
)
},
],
posts: [
{
fname: "gerald",
lname: "nakhle",
egroup: "faisbuk",
dob: "8/10/1995"
}
]
Run Code Online (Sandbox Code Playgroud)
我调用渲染表:
<ReactTable columns={this.state.columns} data={this.state.posts}></ReactTable>
Run Code Online (Sandbox Code Playgroud)
我的 onclick 处理函数,但我不确定如何访问我所追求的表格行数据
handleShow(e) {
console.log(e);
}
Run Code Online (Sandbox Code Playgroud)
在您的表定义中:
export function TableCustom({handleShow}) {
const columns = React.useMemo(() => [{
Header: 'Action',
accessor: 'action',
Cell: props => <button className="btn1" onClick={() => handleShow(props)}>Details</button>,
},]
return <ReactTable>;
});
Run Code Online (Sandbox Code Playgroud)
在您的父组件中:查看单击行的数据:
const handleShow = (cell) => {
console.log(cell?.row?.original);
}
Run Code Online (Sandbox Code Playgroud)
小智 5
您需要为该行添加一个 onClick 处理程序
const onRowClick = (state, rowInfo, column, instance) => {
return {
onClick: e => {
console.log('A Td Element was clicked!')
console.log('it produced this event:', e)
console.log('It was in this column:', column)
console.log('It was in this row:', rowInfo)
console.log('It was in this table instance:', instance)
}
}
}
<ReactTable columns={this.state.columns} data={this.state.posts} getTrProps={onRowClick}></ReactTable>
Run Code Online (Sandbox Code Playgroud)
检查这篇文章以获取更多信息react-table组件onClick事件的列
在 @tanstack/react-table v8 上,你可以简单地放置你的 table 组件:
// this is your table component
<table>
{table.getRowModel().rows.map((row) => {
// onRowClick is a custom table prop -> onRowClick: (row: Row<any>) => void
return <tr onClick={onRowClick(row)}> ... </tr>
})}
</table>
Run Code Online (Sandbox Code Playgroud)
然后在你的组件声明上:
<ReactTable data={data} columns={columns} onRowClick={(row) => console.log(row.original)} />
Run Code Online (Sandbox Code Playgroud)
如果您不想添加另一列来放置可单击按钮,而只想使行可单击,那么这非常有用。
| 归档时间: |
|
| 查看次数: |
22702 次 |
| 最近记录: |