我正在创建一个待办事项列表应用程序。我在构造函数中创建了一系列任务,使用map方法在屏幕上呈现所有任务。当我试图通过点击按钮获取文本的文本值时,它每次都给我最后一个值。什么可以解决?
我需要的是例如,如果我点击第二个更改按钮,它应该显示“task2”,而不是“task3”
代码:
import React, { Component } from 'react';
import './bootstrap.min.css';
class FieldGroup extends Component {
constructor(props){
super(props);
this.state = {
edit:false,
tasks: [
"task1",
"task2",
"task3"
]
},
this.handleChange = this.handleChange.bind(this);
this.handleRemove = this.handleRemove.bind(this);
}
handleChange(index){
const currText = this.refs.currval.innerText;
alert(currText);
}
handleRemove(){
}
render(){
return (
<div className="Field">
{
this.state.tasks.map((item,index) => {
return (
<div key={index} index={index}>
<h2 ref="currval">{item}</h2>
<button type="button" className="btn" onClick={this.handleChange}>Change</button>
<button type="button" className="btn" onClick={this.handleRemove}>Delete</button>
</div>
)
})
}
</div>
)
}
}
export default FieldGroup;
答案 0 :(得分:0)
字符串
refs
存在一些问题,被视为遗留问题,可能会在以后的某个版本中删除
注意: ref回调仅用于DOM目的而不用于数据值。
以这种方式定义处理程序。
onClick={(event) => this.handleChange(item)}
渲染:
render() {
return (
<div className="Field">
{
this.state.tasks.map((item, index) => {
return (
<div key={index} index={index}>
<h2 ref="currval">{item}</h2>
<button type="button" className="btn" onClick={(event) => this.handleChange(item)}>Change</button>
<button type="button" className="btn" onClick={this.handleRemove}>Delete</button>
</div>
)
})
}
</div>
)
<强> handleChange 强>
handleChange(item) {
alert(item);
}