【发布时间】:2019-05-30 18:17:51
【问题描述】:
我正在尝试在文本框中输入值并通过设置反应状态在单击按钮时打印它们。我正在推送数组中的对象,该对象在文本框的值正在推送但未映射的状态下初始化。它给出错误 this.state.elements.map is not a function
import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';
class App extends Component {
constructor(props) {
super(props);
this.state = {
elements: [
{element1 :"A",element2: "A"},
{element1 :"B",element2: "B"},
{element1 :"C",element2: "C"},
{element1 :"D",element2: "D"}
],
}
this.elementInput = "";
this.elementInput_2 = "";
}
addItems()
{
debugger
this.setState({
elements : this.state.elements.push({
element1 : this.elementInput.value ,
element2 : this.elementInput_2.value
})
})
console.log()
}
render() {
return (
<div>
<input type="text" placeholder="Enter Element" ref={(input) => this.elementInput = input} />
<input type="text" placeholder="Enter Element" ref={(input) => this.elementInput_2 = input} />
<button onClick={this.addItems.bind(this)}>Add</button>
{
this.state.elements.map((item,index)=> {
return <p key={index}>{item.element1 + " " + item.element2}</p>
})
}
</div>
);
}
}
export default App;
【问题讨论】:
-
你可以用
.concat()代替.push();它返回新数组。无论如何,这里最重要的是要了解该错误意味着this.state.elements不再是一个Array,并且要对其进行调试,您需要找到导致此错误的行。如果你不学习如何阅读错误信息,你会一直这样陷入困境。
标签: javascript reactjs