Таким образом, мой console.log печатается так, как будто я на шаг отстаю от своих вызовов onSubmit, но когда я проверяю веб-инструменты React в Chrome, я вижу, что мое состояние обновлено.Может кто-нибудь объяснить мне, что я здесь не так делаю?Я полагаю, что это неправильное понимание асинхронных и синхронных методов, но на самом деле может дать хорошее объяснение этому.
import React, { Component } from 'react';
import TodoInput from './todo-input';
class App extends Component {
constructor(props){
super(props);
this.state = {
todos: [],
inputValue: ''
}
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
};
handleChange = (e) => {
e.preventDefault();
this.setState({
inputValue: e.target.value
});
}
handleSubmit = (e) => {
e.preventDefault();
const newTodo = {
title: this.state.inputValue,
id: Date.now,
done: false
};
this.setState((prevState) => ({
todos: [...prevState.todos, newTodo]
}));
this.setState({inputValue: ''});
console.log(this.state.todos);
}
render() {
const mappedTodos = this.state.todos.map((todo, index) =>
<div key={index}>
{todo.title}
</div>
)
return (
<div>
<TodoInput
value={this.state.inputValue}
onChange={this.handleChange}
onSubmit={this.handleSubmit}
/>
{mappedTodos}
</div>
);
}
}
export default App;