Redux: Действия должны быть простыми объектами, использовать пользовательское промежуточное ПО для асинхронных действий - PullRequest
1 голос
/ 13 октября 2019

У меня есть избыточное действие, которое выглядит следующим образом

export const authFacebook =  async () => {
console.log('Dispatching Facebook Auth')
return async (dispatch) => {
    dispatch({type: AUTH.AUTH_REQUEST})
    const initRequest = new NetworkRequest()
    try {
        const makeRequest = await initRequest.makeRequest('/auth/facebook')
        console.info('Facebook Auth Request', makeRequest)
            dispatch({
                type: AUTH.AUTH_FACEBOOK,
                payload: {
                    verifiedStatus: makeRequest.data.verifiedStatus || 3 // Email only verified is 3
                }
            })
    } catch (error) {
        console.error(error)
    }
}

Где AUTH.AUTH_FACEBOOK - строка

export const AUTH = {
  AUTH_FACEBOOK: 'AUTH_FACEBOOK',
  LOGOUT: 'LOGOUT',
  AUTH_ERROR: 'AUTH_ERROR'
}

Когда я отправляю действие, я получаю следующую ошибку

index.delta: 35439 Возможный необработанный отказ от обещания (id: 0): Ошибка: действия должны быть простыми объектами. Используйте пользовательское промежуточное ПО для асинхронных действий. Ошибка: действия должны быть простыми объектами. Используйте пользовательское промежуточное ПО для асинхронных действий.

Несмотря на то, что в моем store.js я использую thunk

import {createStore, applyMiddleware, compose} from 'redux'
import thunk from 'redux-thunk'
import rootReducer from './reducers/rootReducer.r'

const middleware = [thunk]
const initialState = {}
const store = createStore(rootReducer, initialState, compose(applyMiddleware(...middleware)))

export default store

Может кто-нибудь помочь мне разобраться, что я делаю неправильно

1 Ответ

0 голосов
/ 13 октября 2019

Вам не нужно определять функцию authFacebook как асинхронную функцию. Удалите асинхронность из строки 1, и она должна нормально работать.

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