Пытаетесь отправить действие ax ios с массивом строк в качестве полезной нагрузки, но продолжаете получать 'undefined' в редукторе? - PullRequest
0 голосов
/ 17 апреля 2020

Я новичок в веб-разработке и в рамках проекта создал Django приложение React Redux. У frontentd есть компонент с записью формы - при отправке формы компонент вызывает действие, которое отправляет запрос ax ios в скрипт сканера Twitter python в серверной части. Скрипт возвращает ответ, содержащий массив строк (твиты находятся внутри массива). Затем я пытаюсь отправить массив, содержащийся в response.data, в качестве полезной нагрузки для редуктора. Тем не менее, я получаю сообщение об ошибке, в котором говорится, что полезная нагрузка того, что я отправил, не определена.

Это оператор возврата вызываемого метода python - корпус представляет собой строковый массив.

return JsonResponse({"results:": corpus})

Это код действия, отправляющего запрос GET методу python. Затем возвращается строковый массив внутри объекта json.

// GET_TWEETS - get list of tweets from hashtag search 
export const getTweets = (hashtag) => dispatch => {
axios
  .get('http://localhost:8000/twitter_search', {
    params: {text: hashtag}
  })
  .then(res => {
    console.log(res.data); //check if python method returns corpus of tweets
    //const results = Array.from(res.data.results);
    dispatch({
      type: GET_TWEET,
      payload: res.data.results
    });
  })
  .catch(err => console.log(err)); 
}

Журнал консоли показывает, что объект успешно возвращен из сценария python. консольный журнал

Это код моего редуктора. Я хочу, чтобы мое действие содержало строковый массив, а затем назначил этот строковый массив «твитам» в состоянии, чтобы я мог вернуть его компоненту, а затем получить доступ к массиву из компонента и затем отобразить содержимое массива твитов этогоx на Интерфейс

import { GET_TWEET } from '../actions/types';

const initialState = {
  tweets: []
}

export default function(state = initialState, action) {
  console.log(action.payload)
  switch(action.type) {
    case GET_TWEET:
      return {
        ...state,
        tweets: [...action.payload]
      }
    default:
      return state;
  }
}

Кроме того, это часть кода для компонента, который я хочу получить массив строк, надеюсь, я правильно настроил эту часть:

export class Tweets extends Component {

  static propTypes = {
    tweets: PropTypes.array.isRequired,
    getTweets: PropTypes.func.isRequired
  }

...

const mapStateToProps = state => ({
  tweets: state.TweetsReducer.tweets
});

export default connect(mapStateToProps, { getTweets })(Tweets);

Вот ошибка, которую я получаю из консоли. Регистрация в консоли полезной нагрузки действия также показывает, что его значение не определено: неопределенная ошибка

Я пытался решить эту проблему уже несколько дней, но полностью потерян, и у меня есть догадаться, решение этого довольно просто ...

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