J'essaie de changer l'état de mon tableau d'objets, il change d'état, mais mon composant ne fait pas de nouveau rendu. Pourquoi donc?

useEffect(() => {
    if(data && data.rows) {
        data.rows.forEach(async (elem) => {
            const row = await axios.get(url);
            elem.members= row.data.length;
        })
    }
}, [data])
0
Ralph 6 nov. 2019 à 12:29

2 réponses

le composant ne sera rendu que lorsque vous définissez l'état, qu'il s'agisse d'un composant basé sur une classe ou de crochets

1. composant basé sur la classe this.setState()

2. crochets setLen()

const [len, setLen] = React.useState(0);
useEffect(() => {
    if(data && data.rows) {
        data.rows.forEach(async (elem) => {
            const row = await axios.get(url);
            setLen(row.data.length);
        })
    }
}, [data])
1
Vahid Akhtar 6 nov. 2019 à 09:33

Pour qu'un composant soit rendu à nouveau, l'état doit être mis à jour. Vous devez faire le setState pour que votre composant soit mis à jour. De plus, si vous obtenez les valeurs mises à jour à partir des accessoires, vous devriez envisager d'utiliser le crochet de componentDidUpdate cycle de vie de react.

0
Harshit Agarwal 6 nov. 2019 à 11:26