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])
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])
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.
De nouvelles questions
javascript
Pour des questions concernant la programmation dans ECMAScript (JavaScript / JS) et ses divers dialectes / implémentations (hors ActionScript). Veuillez inclure toutes les balises pertinentes dans votre question; par exemple, [node.js], [jquery], [json], etc.