【问题标题】:how to add pagination and fire row click event in table in react js如何在反应js中的表格中添加分页和触发行点击事件
【发布时间】: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;
`

【问题讨论】:

  • &lt;tr&gt; 只是 HTML 中的包装标签,不接受 onClick 事件。而是尝试在&lt;td&gt; 标签上应用您的 onClick 函数。
  • @Enchew 我也尝试过,但没有运气。它的行为仍然相同。
  • 其实我说的是胡言乱语和不正确的。我测试了它并且它有效。我发现你的错误,请检查我写的答案。
  • 您能否帮助我了解如何在单击按钮时导航到新组件。我在 findDetails() 函数下面写了 this.props.history.push("/NewComponent");
  • 你可以使用&lt;Link to='/NewComponent&gt; Find Details &lt;/Link&gt;你的方式也是可以的。

标签: reactjs react-table


【解决方案1】:

您以错误的方式调用 onClick。传递参数时,您必须将函数包装在匿名函数中:

  <tr
          key={CUSTOMER_ID}
          onClick={() => this.findDetails(value)}
  >

我会解释的。当传递onClick 时,React 正在等待一个函数名(实际上是一个引用),然后它通过添加括号来调用它。如果您像以前一样自己添加它们 (onClick={this.findDetails()} ),您会立即调用函数并将函数的 RESULT 传递给 onClick 侦听器。

【讨论】:

  • 天哪!!!我花了整个晚上来解决这个问题,你发现这是几秒钟。非常感谢您的帮助。能否请您帮助我如何为该表应用分页。
  • 最近我帮助站点中的某个人实现了分页。看看这个链接:stackoverflow.com/questions/61311155/… 检查我的答案和答案下面的 cmets,它们会在聊天中继续。同时,请考虑投票并将答案标记为已接受。
  • 我会检查的。再次感谢您。
猜你喜欢
  • 2019-07-27
  • 1970-01-01
  • 1970-01-01
  • 2017-12-10
  • 2016-10-12
  • 2023-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多