map is not a function 在 REACT 中对数组使用 push 后出现错误
map is not a function ERROR after using push on an array in REACT
我在函数(事件)中将元素推送到数组,
将此元素推入数组后出现此错误,
handleAddList(s) {
this.setState({lists :this.state.lists.push(s) });
console.log(this.state.lists);
}
lists.map 不是函数。
列出一个 React 组件
如果我这样写
handleAddList(s) {
this.setState({lists :['something','something else']});
console.log(this.state.lists);
}
但是当我手动定义列表时它运行良好。就在我在数组中推送一个新元素时,我收到了这个错误。另外,如果 push 破坏了数组。
最好的问候
push
returns 追加元素后数组的长度而不是数组,你需要的是concat
handleAddList(s) {
this.setState({lists :this.state.lists.concat([s]) });
}
另外你需要使用像
这样的回调
handleAddList(s) {
this.setState({lists :this.state.lists.concat([s]) }, () => { console.log(this.state.lists)});
}
push
的结果是数组的长度,这不是你想要的。您想用新对象创建一个新数组:
handleAddList(s) {
this.setState(
previousState => {
return { lists: [...previousState.lists, s] };
},
() => {
console.log(this.state);
}
);
}
我在函数(事件)中将元素推送到数组, 将此元素推入数组后出现此错误,
handleAddList(s) {
this.setState({lists :this.state.lists.push(s) });
console.log(this.state.lists);
}
lists.map 不是函数。 列出一个 React 组件
如果我这样写
handleAddList(s) {
this.setState({lists :['something','something else']});
console.log(this.state.lists);
}
但是当我手动定义列表时它运行良好。就在我在数组中推送一个新元素时,我收到了这个错误。另外,如果 push 破坏了数组。 最好的问候
push
returns 追加元素后数组的长度而不是数组,你需要的是concat
handleAddList(s) {
this.setState({lists :this.state.lists.concat([s]) });
}
另外
handleAddList(s) {
this.setState({lists :this.state.lists.concat([s]) }, () => { console.log(this.state.lists)});
}
push
的结果是数组的长度,这不是你想要的。您想用新对象创建一个新数组:
handleAddList(s) {
this.setState(
previousState => {
return { lists: [...previousState.lists, s] };
},
() => {
console.log(this.state);
}
);
}