Je continue à obtenir cette erreur. Cela a déjà fonctionné, mais au fil du temps, il a commencé à me donner l'erreur.
J'ai essayé de changer la fonction de flèche en une fonction standard. J'ai également essayé d'utiliser le même code dans une autre application, et cela a fonctionné. Mais pour une raison quelconque, je reçois seulement l'erreur dans cette application. P>
import React from 'react';
const NewSingle = ({item}) => (
<div className='col s4'>
<div className='card'>
<div className='card-image'>
<img src={item.urlToImage} alt={item.title} />
<span className='card-title'>{item.source.name}</span>
</div>
<div className='card-content'>
<p>{item.title}</p>
</div>
<div className='card-action'>
<a href={item.url} target='_blank' rel="noopener noreferrer">Full article</a>
</div>
</div>
</div>
);
export default NewSingle;
3 Réponses :
Etant donné que Error CODE> est uniquement défini après la récupération et que vous ne vérifiez pas si news code> détient des données, vous devez ajouter un conditionnel avant retourner < / Code> Dans votre rendu ou changez le conditionnel dans RenderItems vers si (! this.state.error && (this.state.news && this.state.news.length)) p >
Essayez de protéger le code par
if (!this.state.error) {
return this.state.news.length> 0 && this.state.news.map((item) => (
<NewSingle key={item.url} item={item} />
));
Je ne pense pas Essayez de changer votre fetch à quelque chose comme ceci: P> Fetch code> fonctionne comme vous vous attendez. Même sur une mauvaise demande, il ne lancera pas une erreur, ce qui signifie data.Articles code> sera parfois indéfini. FETCH code> définit réponse.ok code> Selon si cela a été réussi, vous pouvez donc utiliser cela pour vérifier avant de continuer. fetch(url)
.then((response) => {
// Add this check and throw an error if it fails
if (!response.ok) {
throw Error(response.statusText);
}
return response.json();
})
.then((data) => {
this.setState({
news: data.articles
})
})
.catch((error) => {
this.setState({
error: true
})
});
Merci, cela semblait résoudre le problème!
votre clé API est visible dans ce post, je ne sais pas si cela était prévu
Ce n'était pas le cas, mais ça va, j'ai régénéré un nouveau.
On dirait que
rendu () code> est appelé avant votreFetch code> la chaîne est terminée. peut-être utiliser undébogueur code> avantrenvoyer cela.state.news.map (...) code> pour voir ce que vous faites de votre gestionL'état de l'état ou des nouvelles est indéfini lors de cet appel de rendu. Logez-les pour savoir qui. Le fait que cela ne se produise que signifie parfois que c'est probablement un problème avec l'asynchronicité.