useDispatch () не работает с redux-observable - PullRequest
0 голосов
/ 20 июня 2019

Я получаю следующую ошибку при использовании useDispatch ловушки с действиями async в моем приложении.

Ошибка: действия должны быть простыми объектами.Используйте пользовательское промежуточное ПО для асинхронных действий.

... любое решение?

//my component >>>

const Comp: React.FC<any> = (props) => {
    const dispatch = useDispatch();
    const subscribers = useSelector((state: any) => state.subscribers.subscribers)

    return (
        <div>
            <h3>Alo Brasil</h3>
            <button onClick= 
{()=>dispatch(SubscribersTypes.GET_ALL_SUBSCRIBERS_START)}>Get All</button>
        </div>
    )
}

//my store >>>

    const epicMiddleware = createEpicMiddleware();
    const composeEnhancers = composeWithDevTools({});

    const configureStore = (preloadedState: ApplicationState) =>
       createStore(
          AppReducer,
          preloadedState,
          composeEnhancers(
             applyMiddleware(
                epicMiddleware
             )
          )
       );

    const store = configureStore(initialStateApp);

    epicMiddleware.run(AppEpic)

//my epic>>

const getAllSubscribersEpic = (action$: any) =>
    action$.pipe(
        filter(isActionOf(actions.getAllRequestStart)),
        switchMap(() =>
            from(axios.get(url))
                .pipe(
                    map((response: AxiosResponse) => response.data),
                    map((data: Array<Subscriber>) => actions.getAllRequestFinish(data)),
                    catchError(error => of(actions.subscribersError(error)))
                )
        )
    )

1 Ответ

0 голосов
/ 20 июня 2019

Хорошо, в моем коде произошла ошибка ... Я добавил Types в свой Epic, и теперь он работает. Я оставляю здесь ответ, если кто-то проходит через это.

type Action = ActionType<typeof actions>;

const getAllEventsEpic : Epic<Action, Action, ApplicationState>= (action$) =>
    action$.pipe(
         ...
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...