【发布时间】:2020-04-21 15:50:30
【问题描述】:
我有下面的子组件反应,我正在渲染父组件中的按钮单击事件。到这里我没有问题。表格正在页面上呈现。我在表格上写了行点击事件 findDetails() 。但问题是 rowClick 事件无法处理行点击。而不是在组件在页面上呈现时执行。我想在 rowClick 上执行。下面是我的表格组件代码。此外,我还需要在同一张表中实现分页,我不知道该怎么做。
class Table extends Component {
constructor(props) {
super(props);
this.state = {
};
}
getHeaader = () => {
var tableHeadings = [
"Customer ID",
"Customer Name",
"Address",
"Contact",
];
return tableHeadings.map((key) => {
return <th key={key}> {key.toUpperCase()}</th>;
});
};
getRowsData = (e) => {
return this.props.Data.map((value, index) => {
const {
"Customer_ID",
"Customer_Name",
"Address",
"Contact",
} = value;
return (
<tr
key={CUSTOMER_ID}
onClick={this.findDetails(value)}
>
<td> {CUSTOMER_ID} </td>
<td> {CUSTOMER_NAME} </td>
<td> {Address} </td>
<td> {Contact} </td>
<td>
<button className="btn btn-info">Find Details</button>
</td>
</tr>
);
});
};
findDetails = (value) => {
console.log("in show button", value.count);
if (value["count"] === 0) {
alert("No details for given customer");
}
};
render() {
return (
<div>
<table
id="display-table"
className="table table-bordered table table-hover table table-responsive pagination"
style={{ tableLayout: "fixed" }}
>
<tbody>
<tr>{this.getHeaader()}</tr>
{this.getRowsData()}
</tbody>
</table>
</div>
);
}
}
export default Table;
`
【问题讨论】:
-
<tr>只是 HTML 中的包装标签,不接受 onClick 事件。而是尝试在<td>标签上应用您的 onClick 函数。 -
@Enchew 我也尝试过,但没有运气。它的行为仍然相同。
-
其实我说的是胡言乱语和不正确的。我测试了它并且它有效。我发现你的错误,请检查我写的答案。
-
您能否帮助我了解如何在单击按钮时导航到新组件。我在 findDetails() 函数下面写了 this.props.history.push("/NewComponent");
-
你可以使用
<Link to='/NewComponent> Find Details </Link>你的方式也是可以的。
标签: reactjs react-table