CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Problème useEffect?

vp8
vp8
Niveau 14
13 mars 2023 à 16:22:22

Bonjour, je suis débutant, j'ai un exercice a faire pour l'organisme ou je suis en formation.

voici le code:

import { useEffect, useState } from "react";
import axios from "axios";
import Header from "../../components/Header";

const Products = () => {
const [data, setData] = useState();

useEffect(() => {
const fetchData = async () => {
try {
const response = await axios.get("http://localhost:3000/categories");
console.log(response.data);
setData(response.data);
} catch (error) {
console.log({ message: error.response });
}
};
fetchData();
}, []);

return (
<>
<Header />
{data.map((item) => {
return <p>salut</p>;
})}
</>
);
};

export default Products;

Bon le problème c'est que une fois sur 2, j'ai un rendu page blanche qui s'affiche avec l'erreur:
"index.js:23 Uncaught TypeError: Cannot read properties of undefined (reading 'map')"
Ok je veux bien, sauf que quand je commente et décommente ce bout de code:
{data.map((item) => {
return <p>salut</p>;
})}
ca marche, j'ai bien mes 200 et quelques salut qui s'affiche, il suffit que j'actualise et hop ca redevient page blanche et ça m'affiche l'erreur dans la console.
J'y comprends rien quelqu'un peut m'aider ça fait depuis hier soir je suis la dessus je peux pas avancer du coup, y'a un problème avec le useEffect?
Merci d'avance aux kheys qui ont une idée... :snif:

vp8
vp8
Niveau 14
13 mars 2023 à 16:23:24

Euh ok je sais pas pourquoi ca a couper mais juste au dessus du useEffect, j'ai bien créer un state:
const [data, setData] =useState();

vp8
vp8
Niveau 14
13 mars 2023 à 16:24:28

Non mais c'est sérieux ?? JV ne supporte pas les crochets ou quoi? https://image.noelshack.com/fichiers/2023/11/1/1678721063-capture-d-ecran-2023-03-13-a-16-24-08.png

vp8
vp8
Niveau 14
13 mars 2023 à 16:47:56

Ok j'ai trouvé... Dans mon state data j'ai mis useState(); au lieu de useState([]) ..............

coronacfd
coronacfd
Niveau 8
13 mars 2023 à 19:31:23

Déjà on fetch pas dans un useEffect , react-quey ou redux

vp8
vp8
Niveau 14
13 mars 2023 à 22:39:29

Comment ça on fetch pas?

Visual_Studio
Visual_Studio
Niveau 9
14 mars 2023 à 11:28:24

Envoie ton nouveau code, car là même le useState est mauvais.

ça doit être comme ça
const [data, setData] = useState([]);

Et bien sur tu change en fonction de l'utilité de ta variable.

En ce qui concerne le fetch, t'as le droit de le faire pour débuter, et tu peux garder ça comme c'est si tu comptes pas réutiliser les données récupérées autre part dans le code, ou bien faire des traitements poussifs dessus.

Mais dans les applications en production, on utilise redux, qui permet d'avoir un state global à l'application, et qui est accessible à tout tes components. (tu peux voir ça comme un objet accessible partout)

Pour modifier cet "objet", on appelle des méthodes appelés actions qui émetteront des évènements qui seront écouté par des reducers, qui modifiront l'object.

Le but de ça est d'avoir des méthodes qui seront disponible partout afin de mettre à jour l'état.

Message édité le 14 mars 2023 à 11:32:05 par Visual_Studio
coronacfd
coronacfd
Niveau 8
15 mars 2023 à 00:37:16

Ça te fait une sauvegarde en cache c'est pratique et ça évite de tout le temps appeller la base de donnée

[Black_Spirit]
[Black_Spirit]
Niveau 19
15 mars 2023 à 12:28:28

Donc en fait ReactJS c'est du fonctionnel full variables globales ? :)

soupeur66
soupeur66
Niveau 17
15 mars 2023 à 16:27:32

C'est vraiment de la merde redux, de manière générale la plupart des stores sont sur utilisés alors qu'en règle générale y a juste besoin d'un context

soupeur66
soupeur66
Niveau 17
15 mars 2023 à 16:33:07

Pour l'auteur, installe react-query et utilise typescript bon sang, t'aurais tout de suite vu qu'il fallait mettre data?.map

soupeur66
soupeur66
Niveau 17
15 mars 2023 à 16:39:38

Le 15 mars 2023 à 12:28:28 [Black_Spirit] a écrit :
Donc en fait ReactJS c'est du fonctionnel full variables globales ? :)

Ca s'appelle un store, rien à voir, si tu croyais descendre react en rétorquant ce truc débile alors que c'est un pattern utilisé par d'autres c'est raté https://image.noelshack.com/fichiers/2018/13/4/1522325846-jesusopti.png

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment