React Native: функция не определена

Я создаю приложение в React Native и продолжаю получать сообщение об ошибке с определенной функцией и, похоже, не могу понять, как это исправить.

Это часть кода, которая вызывает ошибку. Он предназначен для извлечения данных из API с использованием redux и redux-thunk для этого.

    componentDidMount() {
      this.props.fetchData(
        V.sprintf(
          "http://timetree.igem.temple.edu/api/pairwise/%s/%s",
          this.state.taxonA,
          this.state.taxonB
        )
      );
    }

вот функция fetchData, которую использует компонент, находится в папке действий.

export const fetchData = url => {
  return async dispatch => {
    dispatch(fetchingRequest());
    try {
     let response = await fetch(url);
     let json = response.json();
     dispatch(fetchingSuccess(json));
    } catch(error){
       dispatch(fetchingFailure(error));
    }
  }
};

вот как я пытаюсь передать его компоненту

SearchScreen.propTypes = {
  fetchData: PropTypes.func.isRequired,
  response: PropTypes.object.isRequired
};

Это this.props.fetchData, который не определен? Как вы передаете его своему компоненту?

adesurirey 26.06.2019 17:33

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

dpatel125 26.06.2019 17:37

с propTypes вы ничего не передаете, вы проверяете тип вашего реквизита. Что именно у тебя в консоли?

adesurirey 26.06.2019 17:37

Вы должны импортировать свое действие и передать его connect, чтобы оно было передано как свойство компонента. Вы хотите, чтобы я развил это в ответе?

adesurirey 26.06.2019 17:38

Спасибо, функция не прошла connect вот в чем была проблема.

dpatel125 26.06.2019 17:47
Умерло ли Create-React-App?
Умерло ли Create-React-App?
В этом документальном фильме React.dev мы исследуем, мертв ли Create React App (CRA) и какое будущее ждет этот популярный фреймворк React.
Освоение React Native: Пошаговое руководство для начинающих
Освоение React Native: Пошаговое руководство для начинающих
React Native - это популярный фреймворк с открытым исходным кодом, используемый для разработки мобильных приложений. Он был разработан компанией...
В чем разница между react native и react ?
В чем разница между react native и react ?
React и React Native - два популярных фреймворка для создания пользовательских интерфейсов, но они предназначены для разных платформ. React - это...
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
Хуки React: что это такое и как их использовать
Хуки React: что это такое и как их использовать
Хуки React - это мощная функция библиотеки React, которая позволяет разработчикам использовать состояние и другие возможности React без написания...
1
5
145
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

propType определяет только типы, а не фактическое значение. если вы экспортируете функцию export const fetchData просто импортируйте его из файла компонента и используйте его:

fetchData(
    V.sprintf(
      "http://timetree.igem.temple.edu/api/pairwise/%s/%s",
      this.state.taxonA,
      this.state.taxonB
    )
  );

без "this.props".

Поскольку функция является создателем действия, ее следует передавать как реквизит через connect

adesurirey 26.06.2019 18:06

ну про подключение вообще не упоминалось. импорт экспортированной функции решит проблему.

Ronny Roktel 26.06.2019 18:16
Ответ принят как подходящий

Итак, как я сказал в комментариях с propTypes, вы ничего не передаете, вы тестируете тип своего реквизита. Вы должны импортировать свою функцию и передать ее в connect.

import { connect } from 'react-redux';
import { fetchData } from '../actions';

export default connect(mapStateToProps, { fetchData })(App);

Другие вопросы по теме