Кастомная ошибка промежуточного программного обеспечения даже после реализации - PullRequest
0 голосов
/ 19 мая 2019

Я использую вызов API через Async-Await, для которого требуется специальное промежуточное программное обеспечение, я использую Thunk в качестве пользовательского промежуточного программного обеспечения.Все зависимости установлены.Кроме того, каким-то образом не удается обнаружить промежуточное программное обеспечение или что-то в этом роде.

Мой код при выполнении показывает следующую ошибку: Error Page

Это мой Действия Страница: Я использовал Async-Await, что привело меня к этой ошибке

import axios from "axios";

export const saveTwitterToken = (token) => {
  return ({
    type: TWITTER_OAUTH,
    payload: token
  });
};

export const callTwitterAPI = async (config) => {
  const request = await axios({
    "url": "https://api.twitter.com/1.1/statuses/home_timeline.json",
    "method": "GET",
    "headers": {
      "Authorization": " _Something_ "
    }
  });
  return ({
    type: "api",
    payload: request
  })
};

Это мой Index.js Страница:

import React from "react";
import ReactDOM from "react-dom";
import App from './App'
import {Provider} from "react-redux";

import 'bootstrap/dist/css/bootstrap.css';
import stores from "./utils/store";

ReactDOM.render(
    <Provider store={stores}>
      <App/>
    </Provider>
    , document.getElementById('root'));

Это Custom Middleware Store Файл:

import { createStore, compose, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';

import reducers from '../reducers';

const store = createStore(
  reducers,
  {},
  compose(
    applyMiddleware(thunk)
  )
);
export default store;

1 Ответ

0 голосов
/ 19 мая 2019

Вы должны использовать диспетчеризацию для асинхронного действия Redux следующим образом:

export const callTwitterAPI = config => async dispatch => {
  const request = await axios({
    "url": "https://api.twitter.com/1.1/statuses/home_timeline.json",
    "method": "GET",
    "headers": {
      "Authorization": " _Something_ "
    }
  });

  dispatch({
    type: "api",
    payload: request
  })
}

Более лучший способ - использовать обещание следующим образом:

export const callTwitterAPI = config => dispatch => {
  axios({
    "url": "https://api.twitter.com/1.1/statuses/home_timeline.json",
    "method": "GET",
    "headers": {
      "Authorization": " _Something_ "
    }
  }).then(request =>
     dispatch({
       type: "api",
       payload: request
     })
  ).catch(error => handle it OR dispatch another action)
}

Надеюсь, это поможет вам.

...