Я верю, что что-то подобное будет работать.
Уверен, что todoId, к которому вы пытались получить доступ, был не определен в конечном URL, потому что вы устанавливали его в операторе then, и он не был частью состояния. Поэтому, когда повторное отображение было инициировано обновлением состояния, оно сбрасывало его на ноль.
class NewTodo extends Component {
state = {
redirect: ''
};
componentDidMount() {
this.props.newTodo();
}
//In the following lines have to do much lines. I need to get todo if from api rest.
submit = todo => {
return this.props
.saveTodo(todo)
.then(response => {
console.info(response);
this.setState({ redirect: response._id});
})
.catch(err => {
throw new SubmissionError(this.props.errors);
});
};
render() {
return (
<div>
<h2>New Todo</h2>
{this.state.redirect ? (
<Redirect to={"/todos/" + this.state.redirect + "/show"} />
) : (
<TodoForm todo={this.props.todo} onSubmit={this.submit} />
)}
</div>
);
}
}
Поскольку пустая строка ложна, троичное условие должно всегда когда-либо оцениваться как истинное, свойство перенаправления состояния было комплект.