React / Redux - Передает ли this.props.history в Thunk анти-паттерн? - PullRequest
0 голосов
/ 25 октября 2018

У меня есть форма в приложении простого реагирования.Когда форма отправляется, она запускает Thunk.

handleSubmit(e) {
    e.preventDefault(); 
    this.props.dispatch(loginUser({
        username: this.state.username, 
        password: this.state.password, 
        history: this.props.history
    }));
}

Как видите, я передаю историю response-router-dom в Thunk.Вот что значит:

export const loginUser = input => dispatch => {
    return fetch('xxxxxxxxxx', {
        method: 'POST', 
        body: JSON.stringify({
            username: input.username, 
            password: input.password
        }), 
        headers: {
            'Content-Type': 'application/json'
        }
    })
    .then(res => {
        if(!res.ok) {
            return Promise.reject(res.statusText)
        }
        return res.json(); 
    })
    .then(token => {
        localStorage.setItem('token', token.authToken); 
        input.history.push('/'); 
    })
    .catch(err => console.error(`error: ${err}`)); 
}

Как видите, если выборка прошла успешно, я затем перехожу к истории.

Это анти-паттерн?Или это нормально.Это работает *, но я хочу знать, если это супер странно / не рекомендуется

1 Ответ

0 голосов
/ 29 апреля 2019

Согласно этой странице: https://reacttraining.com/react-router/web/guides/redux-integration вы делаете правильные вещи, включая историю, в своем вводе thunk.

Цитата: «Решение здесь состоит в том, чтобы просто включить объект истории (предоставляется всемкомпоненты маршрута) в полезной нагрузке действия, и ваш асинхронный обработчик может использовать это для навигации при необходимости. "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...