Async Actions Reducer Печатания с использованием typesafe-действий - PullRequest
0 голосов
/ 14 ноября 2018

У меня небольшая сложность в использовании createAsyncAction из модуля typesafe-actions ( Typesafe Actions ) и наборе их одинаково для моего редуктора

Вот действие

export const login = createAsyncAction(
    EmployeeConstants.LOGIN.REQUEST,
    EmployeeConstants.LOGIN.SUCCESS,
    EmployeeConstants.LOGIN.ERROR
)<ILoginRequest,ILoginSuccess, Error>();

Как видите, это создает асинхронный компоновщик действий AsyncActionBuilder, а не сами действия.

И мой редуктор набирается, выполняя подобные действия

import * as loginActions from './actions';

type IEmployeeActions = ActionType<typeof loginActions>;

const employeeState = (state = initialState, action: IEmployeeActions) => {
  // switch cases
}

Но я не могу получить доступ к payload или type (очевидно), потому что loginActions - это объединение асинхронных сборщиков, а не самих действий.

Как их разрешить?

1 Ответ

0 голосов
/ 14 ноября 2018

Хорошо, то, что у меня есть, на самом деле правильно, но у меня была плохая реализация при создании констант в createAsyncAction

Я динамически генерировал константы, как показано ниже:

function createAsyncTypes(type: string) {
    return {
        REQUEST: type + "_REQUEST",
        SUCCESS: type + "_SUCCESS",
        ERROR: type + "_ERROR"
    }
}

Исервер TS не смог вычислить это во время linting, и это вызвало путаницу во время сцепления.

Я изменил их на это,

export const login = createAsyncAction(
    "LOGIN_REQUEST",
    "LOGIN_SUCCESS",
    "LOGIN_FAILURE"
)<ILoginRequest, ILoginSuccess, Error>();

И сервер TS действительно показывает экспорт

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