1
votes

Comment supprimer un élément du tableau et mettre à jour l'état sans cet élément sur la FlatList?

J'essaie de supprimer les données d'une FlatList qui rend les ventes à partir d'un fichier JSON data.json Le problème est que lorsque je supprime la vente avec un certain identifiant et que je retourne à la page d'accueil, il affiche à nouveau tous les articles. Alors, comment puis-je supprimer les éléments de la source et les éléments seront supprimés pendant toute la durée de vie de l'application jusqu'à ce que l'utilisateur ferme et rouvre à nouveau? Toute aide serait très appréciée.

  onPressRemove(id) {
    this.setState(
    prevState => {
      let data = prevState.data.slice();
      let newId = 0;
      for (var i=0; i < data.length; i++){
        if (data[i].id === id){
          newId = i;
        }
      }
      data.splice(newId, 1)
      return { data };
  });
}
state = {
    data: data.sales
  }
{
    "sales": [
        {
            "id": 1,
            "amount": 100
        },
        {
            "id": 2,
            "amount": 200
        },
   ]
}
import data from './data.json';


0 commentaires

3 Réponses :


1
votes

Le problème ici est que là où vous allez dans une autre partie de votre application, ce composant DÉMONTAGE et lorsque vous reviendrez à ce composant, il montera et utilisera l'état de l'importation (data. json). Pour ce type de problème, de nombreuses personnes choisissent d'utiliser redux .

Une autre façon serait de garder l'état sur le parent et de le donner comme accessoire à ce composant, donc même lorsque cela sera démonté et remonté, il aura toujours le prop inchangé (parce que le parent ne se démonte jamais).

Si vous avez d'autres questions sur la mise en œuvre, n'hésitez pas à commenter / partager votre code si vous avez bloqué la mise en œuvre de ma réponse.


1 commentaires

Merci pour ça! :) Je comprends mon problème, je pensais juste à un moyen de le contourner.



1
votes

Après l'opération, mettez à nouveau votre état à jour

onPressRemove(id) {
    const { data } = this.state;
    let filteredData = data.filter(d=> d.id!==id);
    this.setState({data:filteredData});
}


0 commentaires

0
votes