Отдельная функция on () вне функции createReducer () в ngrx - PullRequest
0 голосов
/ 03 февраля 2020

Можно ли отделить параметры on () от функции createReducer ().

Например, вместо этого;

const yourInformationReducer = createReducer<IYourInformationState>(
    initYourInformationState,
    on(YourInformationStoreAction, (state, { payload }) => ({
        ...state,
        ...payload
    }))
);

Определить постоянную для включения ( ) function;

const onYourInformationStoreAction = on<IYourInformationState>(
    YourInformationStoreAction,
    (
        state: IYourInformationState,
        { payload }: { payload: IYourInformationFormModel }
    ) => ({
        ...state,
        ...payload
    })
);

Затем ссылайтесь на него в createReducer;

const yourInformationReducer = createReducer<IYourInformationState>(
    initYourInformationState,
    onYourInformationStoreAction 
);

У меня проблема в том, что когда я устанавливаю тип для объекта полезной нагрузки в отделенной функции, он выдает ошибку машинописного текста, с которой я не знаю, как справиться ...

Ошибка: (16, 2) TS2345: Аргумент типа '(состояние: IYourInformationState, {payload}: {payload} : IYourInformationFormModel;}) => {name: string; электронная почта: строка; contactNumber: строка; validityStatus: ValidityStatus; } 'нельзя назначить параметру типа' ActionCreator> | OnReducer>]>». Тип '(состояние: IYourInformationState, {payload}: {payload: IYourInformationFormModel;}) => {name: string; электронная почта: строка; contactNumber: строка; validityStatus: ValidityStatus; } 'нельзя назначить типу' ActionCreator> '. Свойство 'type' отсутствует в типе '(состояние: IYourInformationState, {payload}: {payload: IYourInformationFormModel;}) => {name: string; электронная почта: строка; contactNumber: строка; validityStatus: ValidityStatus; } 'но требуется в типе' TypedAction '.

1 Ответ

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

Разобрался ...

function onYourInformationInitAction() {
    return on(YourInformationInitAction, (state: IYourInformationState) => ({
        ...state
    }));
}

function onYourInformationStoreAction() {
    return on(
        YourInformationStoreAction,
        (state: IYourInformationState, { payload }) => ({
            ...state,
            ...payload
        })
    );
}

function onYourInformationValidityStatus() {
    return on(
        YourInformationUpdateValidityStatusAction,
        (state: IYourInformationState, { validityStatus }) => ({
            ...state,
            validityStatus
        })
    );
}

const yourInformationReducer = createReducer<IYourInformationState>(
    initYourInformationState,
    onYourInformationInitAction(),
    onYourInformationStoreAction(),
    onYourInformationValidityStatus()
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...