Я пытаюсь обновить состояние в реакции только после отправки формы. У меня есть одна форма html, в которой есть 1 ввод текста и кнопка отправки, но для изменения состояния в реакции требуется 2 нажатия кнопки подтверждения. Я использую 2 метода handleSubmit
и handleChange
.
handleChange
найдите изменения в поле ввода и соответственно обновите состояние.
handleSubmit
добавьте обновленное состояние handleChange
в массив при отправке формы
и состояние содержит {itemslist: [], currentitem: ""}
, когда 1-й раз при нажатии кнопки отправки он возвращает предыдущее значение элемента (или пустой массив), а во 2-й раз - массив со значением, присутствующим на входе поле.
ниже мой полный код
import React from 'react';
class App extends React.Component{
constructor(){
super()
this.state = {
currentitem: '',
itemslist: []
}
this.handleChange = this.handleChange.bind(this)
this.handleSubmit = this.handleSubmit.bind(this)
}
handleSubmit(event){
event.preventDefault();
this.setState((prevState) => {
return{
itemslist: prevState.itemslist.concat([this.state.currentitem])
}
})
console.log(this.state.items)
}
handleChange(event){
const {name, value} = event.target
this.setState({ [name] : value })
console.log(this.state.currentitem)
}
render(){
return(
<div>
<form onSubmit={this.handleSubmit} >
<input type='text' placeholder='enter text' name='currentitem' onChange={this.handleChange} value={this.state.currentitem} />
<button type='submit'>Submit</button>
</form>
</div>
)
}
}
export default App;