javascript - 尝试获取表 react js单击的行的数据

标签 javascript reactjs html-table onclick

我是 react 新手,正在制作应用程序,我想要获取表格上被单击的行的数据,我不知道这种方法是否好,需要建议

到目前为止,我已经使用了 onClick 监听器,但是当我单击表格时,它在 console.log(contract) 中给出了 [object,object],我也尝试使用循环来查看其中的数据,但它给出了我[对象,对象],这是我的以下代码:

    <table id="mytable" cellSpacing="0" width="100%">
         <thead>
         <tr>
             <th>CarName</th>
             <th>DriverName</th>
             <th>Date</th>
             <th>Pickup</th>
         </tr>
         </thead>
          <tbody>

          {                                   
            this.state.contracts.map((contract,index)=>{
            return(
              <tr key={index}  data-item={contract} onClick={this.contractdetails}>
                            <td>{contract.car} </td>                                                       
                            <td>{contract.driver}</td>
                            <td>{contract.date}</td>
                            <td>{contract.pickup}</td>
              </tr>
                      )})

            }
          </tbody>
         </table>

onClick函数

 contractdetails=(e)=>{
    const contract=e.currentTarget.getAttribute('data-item');
    console.log(contract)
};

最佳答案

设置data-item时使用JSON.stringify

<tr key={index}  data-item={JSON.stringify(contract)} onClick={this.contractdetails}>

并在访问它时使用JSON.parse()

contractdetails=(e)=>{
    const contract= JSON.parse(e.currentTarget.getAttribute('data-item'));
    console.log(contract)
};

更好的方法是将 index 设置为 data-index,您可以从 state 访问它

this.state.contracts.map((contract,index)=>{
            return(
              <tr key={index}  data-index={index} onClick={this.contractdetails}>
               ...
               ...

            }

您可以像下面这样访问它

contractdetails=(e)=>{
    let index = +e.currentTarget.getAttribute('data-index')
    console.log(this.state.contracts[index]);
};

关于javascript - 尝试获取表 react js单击的行的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55537456/

相关文章:

javascript - 尽管 html 表中有数据,但仍显示 "No data available in table"

css - 我正在学习CSS,我无法理解这个元素选择器

javascript - RegEx 匹配点但不匹配 i.e 或 e.g

javascript - 更改绑定(bind)函数参数

javascript - 如何使用反引号将 react 元素插入数组

reactjs - 如何在要测试的 React 组件内模拟自定义钩子(Hook)?

php - Webkit 不断改变表格的固定宽度

javascript - 使用 jQuery 查找特定文本,然后将类添加到以下 UL

javascript - 如何在窗口调整大小时使用 jquery 水平居中相对 div?

javascript - 单击按钮时水平 react 滚动组件