如何通过键选择div? reactjs

时间:2017-10-31 12:24:23

标签: reactjs

这里我有这个div,它由父组件接收的数据动态生成:

            {Object.keys(this.state.cart.cart).map((key,i)=>{
                return(
                                <div className="item" key={i} identifier="mat">
                                    <div className="carti">
                                        <input type="number" value={this.state.cart.cart[key].quantity} min="1"/>
                                        <h4 className="generalDescription">{key}</h4>
                                        <h4 className="cost">₦{Math.round(this.state.cart.cart[key].totalCost*100)/100}</h4>
                                    </div>
                                    <a className="cancelBtn" key={i} onClick={this.deleteDiv} >x</a>
                                </div>)

            })}

我有这个由onClick事件处理程序调用的函数:

deleteDiv(e){
        console.log(e.target.key);
    }

现在我想在点击X按钮时获取密钥的值,但我在控制台上获得的内容是未定义的。我需要帮助!

2 个答案:

答案 0 :(得分:2)

正如安德鲁所说,key是一个道具,并没有转化为DOM中相应节点的属性。如果要访问它,可以将其传递给函数,例如:

deleteDiv(index){
  console.log(index);
}
...
<a className="cancelBtn" key={i} onClick={this.deleteDiv.bind(i)}>x</a>
//or
<a className="cancelBtn" key={i} onClick={() => this.deleteDiv(i)}>x</a>

甚至:

deleteDiv(e){
  console.log(e.target.dataset.key);
}
<a className="cancelBtn" key={i} data-key={i} onClick={this.deleteDiv}>x</a>

答案 1 :(得分:0)

如果您只需要事件处理程序中的索引,只需将其作为参数传递给函数:

<a className="cancelBtn" key={i} onClick={() => this.deleteDiv(i)}>x</a>

然后

deleteDiv(index) {
    console.log(index);
}