Перенаправить на другой компонент с URL-адресом, передающим идентификатор, например - PullRequest
0 голосов
/ 24 февраля 2020

В TodoForm.jsx я создаю задачу, и когда я нажимаю кнопку «Создать», ответ, который находится в New Todo.jsx, не определен.

Следовательно, идентификатор задачи, переданный как параметр по URL, равен не определено. Вместо этого я вижу '/ todos / undefined / show' вместо '/ todos / 134ls5 / show' с данными, которые я заполнил в форме Todo, где 134ls5 - это идентификатор созданной задачи.

Подробнее см. В BillForm создать или отредактировать задачу и перенаправить в ShowTodo, а не в ListTodo

1 Ответ

0 голосов
/ 24 февраля 2020

Я верю, что что-то подобное будет работать.

Уверен, что 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>
        );
    }
}

Поскольку пустая строка ложна, троичное условие должно всегда когда-либо оцениваться как истинное, свойство перенаправления состояния было комплект.

...