Я новичок в React и прохожу учебник, в котором используется API Poke (https://pokeapi.co).
. Я использую whatwg-fetch для отправки запросов в API. Это сохраняет данные из API какобъект в состояние selectedPokemon.
this.state = {
// other states
showModal: false,
selectedPokemon: null
};
Я хочу отправить эти данные компоненту (в моем случае модальному), поэтому я обновил свой вызов модального компонента, включив в него состояние selectedPokemon как проп:
<PokemonModal pokemon={this.state.selectedPokemon} closeModal={this.handleModalClose} showModal={this.state.showModal} />
Я также обновил свой компонент PokemonModal (на PokemonModal.js), добавив в него pokemon
в качестве реквизита:
const PokemonModal = ({showModal, closeModal, pokemon}) => {
Однако, когда я иду использовать этот реквизит в PokemonModal
, например:
<Modal.Title>{pokemon.name}</Modal.Title>
Я получаю ошибку
Uncaught TypeError: Невозможно прочитать свойство 'name' из null
(Этото же самое с любой другой частью объекта, которую я пытаюсь использовать, например pokemon.order
. Реквизиты showModal и closeModal работают как положено.)
Кто-нибудь знает, как я могу отправить и использовать объект JSON в другой компонент?
Если это имеет значение, моя функция выборки настроена таким образом.console.log возвращает ожидаемый результат, который является объектом из: https://pokeapi.co/api/v2/pokemon/10125/
handleModalOpen(pokemon) {
if(pokemon.url !== undefined) {
fetch(`${pokemon.url}`)
.then(response => {
return response.json();
})
.then(json => {
this.setState({
selectedPokemon: json,
showModal: true
})
console.log('selected: ' + this.state.selectedPokemon);
})
.catch(ex => {
console.log('pasrsing failed ' + ex);
})
}
}