我想为所有动态创建的按钮设置id属性

时间:2019-05-15 18:23:08

标签: javascript reactjs jsx

我创建了一个动态表,该表是通过从API提取数据来构建的。现在,我想设置所有按钮的id属性,例如-

第1行userId = {card.user_id} <按钮id = {card.user_id}>点击此处

我已经尝试了一个简单的javascript函数。 像-

<button id="11" onClick=handleClick(this.id)>click here</button>

 handleClick(id){
     console.log(this.id)
 }

实际代码是-

<div className='container-fluid'>
            <hr />
            <table className='table table-striped mt-4'>
                <thead>
                    <tr>
                        <th>User_Id</th>
                        <th>User_Name</th>
                        <th>Email</th>
                        <th></th>
                        <th></th>
                    </tr>
                </thead>
                <tbody>
                    {this.state.arr.map((card)=>{
                        return(
                            <tr>
                                <td>{card.user_id}</td>
                                <td>{card.user_name}</td>
                                <td>{card.user_email}</td>
                                <td>
                                    <Link to='/dashboard/users/edit'>
                                    <button onClick={this.goToEdit} 
                                            className="btn btn-outline-primary ml-2 my-2 my-sm-0">Edit</button>     
 // I want to set the user_id to this Edit buttons id attribute
                                    </Link>
                                </td>
                                <td>
                                    <button onClick={this.onDeleteClick} 
                                            className="btn btn-outline-primary ml-2 my-2 my-sm-0">Delete</button>
                                </td>
                            </tr>       
                    ) })}
                </tbody>
             </table>
        </div>

我想做这样的事情- https://screenshots.firefox.com/AqTlvJOO6KgD0zG5/mrigank.com

2 个答案:

答案 0 :(得分:-1)

我的建议是仅使用map中的索引并使用它。或者,如果您想设置card.user_id,也可以这样做。

<tbody>
                   {this.state.arr.map((card, index)=>{
                        return(
                            <tr>
                                <td>{card.user_id}</td>
                                <td>{card.user_name}</td>
                                <td>{card.user_email}</td>
                                <td>
                                    <Link to='/dashboard/users/edit'>
                                    <button id={card.user_id} onClick={this.goToEdit} 
                                            className="btn btn-outline-primary ml-2 my-2 my-sm-0">Edit</button>     
                                    </Link>
   .... 

答案 1 :(得分:-2)

您可以将id传递给给定元素的value属性。

因此您可以执行以下操作:

{this.state.arr.map((card, index) => {
  return(
      <tr>
          <td>{card.user_id}</td>
          <td>{card.user_name}</td>
          <td>{card.user_email}</td>
          <td>
            <Link to='/dashboard/users/edit'>
              <button 
                onClick={this.goToEdit} 
                className="btn btn-outline-primary ml-2 my-2 my-sm-0"
                value={card.user_id}
              >Edit
              </button>     
            </Link>
          </td>
          <td>
              <button 
                 onClick={this.onDeleteClick} 
                 className="btn btn-outline-primary ml-2 my-2 my-sm-0"
                 value={card.user_id}
              >Delete
              </button>
          </td>
      </tr>       
) })}

然后onClick,您只需要使用该值即可。