Redux ожидает отправки и обработки ошибок - PullRequest
1 голос
/ 21 января 2020

Я использую такой редукционный thunk в машинописи:

//store
export const thunkCreateArticle = (articleCreateView: ArticleCreateView):
    ThunkAction<void, ArticleState, BlogClient, Action<string>> => async (dispatch, _, api) => {
        const article = await api.createArticle(articleCreateView);
        dispatch({
            payload: article,
            type: CREATE_ARTICLE,
        });
    };

//component
const mapDispatchToProps = (dispatch: ThunkDispatch<{}, {}, any>): DispatchProps => {
    return {
        addArticle: async (add: v.ArticleCreateView) => {
            dispatch(thunkCreateArticle(add));
        }
    }
}

Я хотел бы ждать dispatch в addArticle в mapDispatchToProps, чтобы я мог сделать что-то ПОСЛЕ addArticle завершенного и обрабатывать ошибки с помощью try-catch. Все решения, которые я нашел для этого, используют глобальный обработчик ошибок, который является ужасным IMO. Мой клиент с состоянием, поэтому я использую дополнительный аргумент из thunk, чтобы «внедрить» его.

1 Ответ

0 голосов
/ 21 января 2020

Я решил, присвоив правильные значения:

export type ActionTypes = ....;
export type BlogThunkResult<R> = ThunkAction<R, RootState, BlogClient, ActionTypes>;
export type BlogThunkDispatch = ThunkDispatch<RootState, BlogClient, ActionTypes>;


export const thunkUpdateArticle = (articleId: number, articleUpdateView: ArticleCreateView):
    BlogThunkResult<Promise<void>> => async (dispatch, _, api) => {
    const article = await api.updateArticle(articleId, articleUpdateView);
    dispatch({
        payload: article,
        type: UPDATE_ARTICLE,
    });
};

Если я использую dispatch, теперь я получаю обещание, которое можно ожидать, и ошибки должным образом передаются вызывающей стороне.

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