Асинхронный редукционный поток требует функции обертки - PullRequest
0 голосов
/ 28 февраля 2020

Мой редукционный поток требует функции-оболочки. (Мой mockstore в jest не нуждается) Thunk добавлен в качестве промежуточного ПО в моем магазине

Действие, которое работает:

export function getSettings (establishmentId: string) {
    return (dispatch: any) => {
        return () => {
            dispatch(settingsLoading())
            Client
                .getSettings(establishmentId)
                .then((settings: ISettings) => {
                    dispatch(getSettingsSuccess(settings))
                })
        }
    }
}

Отправка:

dispatch(getSettings(establishmentId))

Действие, которое не работает (но в моем тесте шутки):

export function getSettings (establishmentId: string) {
    console.log('GET SETTINGS')
    return (dispatch: any) => {
        dispatch(settingsLoading())
        return Client
            .getSettings(establishmentId)
            .then((settings: ISettings) => {
                // dispatch(getSettingsSuccess(settings))
            })
    }
}

Когда я делаю это без функции-оболочки, он говорит мне, что я должен применить промежуточное ПО thunk (что я и сделал)

return createStore(
        rootReducer,
        composeEnhancers(
            applyMiddleware(thunk)
        )
    )

1 Ответ

1 голос
/ 02 марта 2020

Найдя ответ, мы допустили ошибку в нашем mapDispatchToProps и использовали комбинацию bindActionCreators и просто возвратили список объектов:

const mapDispatchToProps = (dispatch: any) => bindActionCreators(
    {
        getSettings: (establishmentId: string) => dispatch(getSettings(establishmentId))
    },
    dispatch
)

должно было быть:

const mapDispatchToProps = (dispatch: any) => {
    getSettings: (establishmentId: string) => dispatch(getSettings(establishmentId))
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...