我有一个名为 App 的反应组件,其中包含 2 个组件:Form 和 Table。并且它们都是受控组件。
在表单中,有一个输入元素和一个按钮。
input 元素有一个 onChange 属性;每当值更改时,它都会更改应用程序状态中的值。
该按钮具有由 App 组件提供的 onClick 属性;每当单击按钮时,状态的 firstNames(它是一个数组)将与 firstname 的状态值相加。
问题是当我单击按钮时,它会抛出一个错误,说我没有传入数组并且它没有 map 方法,即使在回调中,更新的状态确实显示了一个数组。
下面是代码:
function Form(props) {
return (
<form>
<label>
Item: <input value={props.value} onChange={props.handleChange} />
</label>
<button onClick={props.handleClick}>Submit</button>
</form>
);
}
function Table(props) {
let firstNames = props.names.map((item, index) => {
return (
<tr key={index}>
<td>{item}</td>
</tr>
);
});
return (
<table>
<thead>
<tr>
<th>First Name</th>
</tr>
</thead>
<tbody>{firstNames}</tbody>
</table>
);
}
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
inputField: "",
firstNames: ["Joey", "Chloe"],
};
this.handleChange = this.handleChange.bind(this);
this.handleClick = this.handleClick.bind(this);
}
handleChange(event) {
this.setState({ inputField: event.target.value });
}
handleClick() {
this.setState(
{
firstNames: this.state.firstNames.push(this.state.inputField),
},
console.log(this.state.firstNames)
);
}
render() {
return (
<div>
<Form
value={this.state.inputField}
handleChange={this.handleChange}
handleClick={this.handleClick}
/>
<Table names={this.state.firstNames} />
</div>
);
}
}
ReactDOM.render(<App />, document.getElementById("root"));