Я создаю приложение в 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
};
Я использовал PropTypes и объявил его как реквизит, а затем вызвал его в приложение. Я добавил это к исходному вопросу выше.
с propTypes вы ничего не передаете, вы проверяете тип вашего реквизита. Что именно у тебя в консоли?
Вы должны импортировать свое действие и передать его connect, чтобы оно было передано как свойство компонента. Вы хотите, чтобы я развил это в ответе?
Спасибо, функция не прошла connect вот в чем была проблема.





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
ну про подключение вообще не упоминалось. импорт экспортированной функции решит проблему.
Итак, как я сказал в комментариях с propTypes, вы ничего не передаете, вы тестируете тип своего реквизита. Вы должны импортировать свою функцию и передать ее в connect.
import { connect } from 'react-redux';
import { fetchData } from '../actions';
export default connect(mapStateToProps, { fetchData })(App);
Это
this.props.fetchData, который не определен? Как вы передаете его своему компоненту?