【问题标题】:How to get React Table Row Data Onclick如何获取 React 表行数据 Onclick
【发布时间】:2019-05-11 01:09:29
【问题描述】:

您好,我正在尝试设置我的 react 应用程序,以便当您单击我的 react-table 中的行项目中的按钮时,该行中的数据将传递到另一个组件。目前我只是想控制台记录正确的数据,但不确定如何根据点击传递反应表行数据。我怎样才能做到这一点? 谢谢

我的虚拟数据与按钮(显示详细视图)一起存储在状态中,我想触发数据通过 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"
      }
    ]

我的调用来渲染表格:

<ReactTable columns={this.state.columns} data={this.state.posts}></ReactTable>

我的 onclick 处理函数,但我不确定如何访问我所追求的表格行数据

handleShow(e) {
    console.log(e);
  }

【问题讨论】:

    标签: reactjs onclick react-props react-table


    【解决方案1】:

    您需要为该行添加一个 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>
    

    查看此帖子了解更多信息react-table component onClick event for a column

    【讨论】:

      【解决方案2】:

      对于 React-table v7:

      将回调属性onRowClicked 传递给表格组件,

      在您的表格组件中调用回调:

      ...row.getRowProps({
               onClick: e => props.onRowClicked && props.onRowClicked(row, e),
      })
      

      在 react-table v7 中,开始的 HTML 元素上的所有展开运算符 与get...Propsprops getter,例如:

      row.getRowProps(), cell.getCellProps(), column.getHeaderProps(), getTableBodyProps()、getTableProps() 等。你可以再传 属性来扩展它。例如:

          ...cell.getCellProps({ 
              style: {color: 'red'},  
              onClick: ()=> {}   
          }) 
      

      【讨论】:

      • 这非常有用,因为我直接在 td 标记中添加了 onClick,而不是将 onClick 作为道具传递给 row.getRowProps 函数,这会导致表格中出现不需要的行为。
      【解决方案3】:

      在您的表定义中:

      export function TableCustom({handleShow}) {
          const columns = React.useMemo(() => [{
              Header: 'Action',
              accessor: 'action',
              Cell: props => <button className="btn1" onClick={() => handleShow(props)}>Details</button>,
          },]
      
          return <ReactTable>;
      });
      

      在你的父组件中:查看点击行的数据:

      const handleShow = (cell) => {
          console.log(cell?.row?.original);
      }
      

      【讨论】:

        【解决方案4】:

        还要确保在构造函数中绑定函数,或使用以下语法:

        handleShow = (e) => {
            console.log(e);
          }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-14
          • 2021-03-11
          • 2020-02-19
          • 2017-07-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多