Reactjs 如何设置列表中的项目状态
我有一个列表,只想设置eventhandler上的第二项。我试图使用Reactjs 如何设置列表中的项目状态,reactjs,Reactjs,我有一个列表,只想设置eventhandler上的第二项。我试图使用lists:this.state.lists[1]进行设置,但它抛出一个错误,表示this.state.lists.map不是函数。设置列表中项目的正确方式是什么?以下是我正在做的: constructor(props) { super(props); this.state = { lists: [] }; this.buttonAHandler = this.buttonAHan
lists:this.state.lists[1]
进行设置,但它抛出一个错误,表示this.state.lists.map不是函数。设置列表中项目的正确方式是什么?以下是我正在做的:
constructor(props) {
super(props);
this.state = {
lists: []
};
this.buttonAHandler = this.buttonAHandler.bind(this);
}
componentDidMount() {
fetch('https://api.com')
.then(response => response.json())
.then(data => this.setState({ lists: data }));
}
buttonAHandler(e) {
this.setState({
lists: this.state.lists[1]
})
}
在渲染返回中,我像这样绑定处理程序:
render(){
return (
<div>
<button onClick={this.buttonAHandler.bind(this)} >see pets</button>
render(){
返回(
看宠物
您收到一个错误,因为单击后,列表
状态从数组
更改为对象
(数组的索引1)。因此,如果仍要使用map()
方法,请将处理程序更改为:
buttonAHandler(e) {
this.setState({
lists: [this.state.lists[1]]
})
}
然后,新的列表
状态将是一个数组
,其中只包含您想要的元素。您所说的“只想设置第二项”是什么意思?是否要删除数组中除第2个元素以外的所有项目,或者是否要更改第2个元素中的某些内容?是的,我有项目列表,单击按钮时,我只想设置第2个元素的状态。抱歉,我仍然不明白您的意思。您能否详细说明如何“仅设置第2个元素的状态”?@Deke没有说明你想做什么。你想让列表
保持一个数组,但更新数组中的一个项目,还是想列表
成为数组中的项目并扔掉其余的项目?假设this.state.lists是[{a:“abc”},{b:“def”}],单击按钮时,我想将状态设置为第二项,即{b:“def”}
@mhodges,可能是映射()
被用来渲染数据。然后,在从数组
更改为Òobject
之后,这就不可能了。是的,正是我所想的。看起来OP只是在上面的注释中被弄糊涂了。你的解决方案就是他们所寻找的-删除我以前的注释,因为它现在已经过时了