Я пытаюсь создать простую страницу с React и JSX, которая сгенерирует пару полей ввода, которые можно стереть, нажав кнопку.
В настоящее время я храню пустой массив в состоянии страницы, который обновляется функцией addItems.
По какой-то причине я не могу очистить массив с помощью своей функции очистки.Я понимаю, что setState
является асинхронным, но мой массив никогда не обновляется и никогда не исчезает.
"use strict";
function Node(props) {
return(<div>
<input type="text" placeholder="input here"></input>
</div>);
}
class Page extends React.Component {
constructor(props) {
super(props);
this.state = {
arr: [],
thresh: 5,
del: "Delete",
};
this.addItem = this.addItem.bind(this);
this.clear = this.clear.bind(this);
}
addItem = (index, array) => {
if (index == this.state.thresh) {
this.setState((state, props) => ({
arr: array,
}));
return;
}
index++;
array.push(<Node key={index} />);
this.addItem(index, array);
};
clear = newArr => {
this.setState({
arr: newArr,
}, () => { console.log(this.state.arr) });
};
render() {
return(<div id="wrapper onClick={() => {this.addItem(0,[])}}>
<div id="fields">
{this.state.arr}
</div>
<button onClick={() => {this.clear([])}}>{this.state.del}</button>
</div>
}
}
ReactDOM.render(<Page />, document.getElementById("root"));
Я ожидаю, что когда я нажму кнопку удаления, массив будет перезаписан пустым массивом, но этоне произойдет.Что я могу делать не так?