【发布时间】:2020-07-28 14:20:12
【问题描述】:
如何获取被点击元素的值? event.target.value 显示undefined。
import React from "react";
class Home extends React.Component{
constructor(){
super()
this.state = {
products: [],
isLoaded: false,
value: ""
}
this.handleClick = this.handleClick.bind(this);
}
componentDidMount(){
fetch("/home")
.then(res => res.json())
.then(result =>{
return(
this.setState({
products: result,
isLoaded: true
})
)
})
}
handleClick(event){
console.log(event.target) //shows full element
console.log(event.target.value) //shows undefined
}
render(){
if(!this.state.isLoaded){
return(
<h1>Loading...</h1>
)
}
return <div>{this.state.products.map(elements =>
<div
key={elements.id}
onClick={this.handleClick}
value={elements.name}
>
{elements.name}
</div>
)}
<h1>Name: {this.state.value}</h1>
</div>;
}
}
export default Home;
【问题讨论】:
-
嘿,@mirzad,因为
event.target是被点击的<div><div>没有价值 -
所有答案的替代方法是在元素中使用
data-value属性。然后在事件处理程序中使用event.target.getAtttribute("data-value")。另一种选择是将值作为参数绑定到事件处理程序:onClick={handleClick.bind(this, elements.name)}。如您所见,有很多可能性。
标签: javascript reactjs