0
votes

Comment produire une matrice avec les touches de mon fichier HTML à partir de la fonction de promesse à l'aide de React

J'ai une base de données de Firebase avec des balises "Bookname" et "Auteur". Comment puis-je rendu une matrice de la fonction "getbook"? xxx

dans la sortie de la console ressemble à: xxx

mais comment mettre ces informations à rendre ()?


12 commentaires

Pourquoi ne pas enregistrer vos données de base dans un état et rendre directement les données de l'état?


Qu'est-ce que vous voulez dire spécifiquement en rendant un tableau? Techniquement, votre sortie est une matrice, une matrice JSON, mais un tableau néanmoins. Pouvez-vous clarifier?


@basic, j'ai besoin de créer dans la table de rendu avec des colonnes "Auteur" et "Nom du livre" à l'aide des touches du tableau JSON


Vous devriez maintenant obtenir une table, vous devez simplement appuyer sur le bouton pour charger les données. Vous pouvez également l'appeler dans ComponentDidMount comme indiqué avant de vous assurer qu'il récupère initialement


Je l'ai également ajouté afin que vous puissiez utiliser l'utilisateur comme clé pour empêcher cette erreur de réaction.


@Moosecouture - Book.User n'est pas unique, ne l'utilisez pas comme une clé. Vérifiez les échantillons de données.


@Moosecouture Merci de l'aide. Mais j'utilise ensuite votre code, j'obtiens cette erreur: "Erreur lors de la création de documents: TypeError: Impossible de lire la propriété 'Statetate' de non définie à des livresComponent.js: 30" Comment puis-je le réparer?


Je sais pourquoi. Laissez-moi réparer.


J'ai mis à jour. Il fallait faire avec la portée de «cela» parce que vous n'utilisez pas de fonctions de flèche


@Moosecouture merci! Ça finit enfin)))


Pouvez-vous le marquer comme meilleure réponse, s'il vous plaît?


@Moosecouture j'ai cliqué sur "Cocher Mark" =)


3 Réponses :


1
votes

Vous pouvez commencer à rechercher vos données dans composantwillmount code> et enregistrement de données dans le champ composant (par exemple livres code>). Ensuite, vous pouvez vérifier ce champ dans rendu code> et sur la base de sa valeur renvoyer un bout ou une matrice.

{
  this.books && this.books.length
  ? <your-array books="this.books"></your-array>
  : <span>No books</span>
}


0 commentaires

1
votes

Cela fonctionne mieux avec l'état. Déclarez un état pour votre composant et votre système d'appels après avoir chargé les données. Dans la méthode de rendu, il suffit de dire {this.state.book} et réagirez à nouveau le composant lorsque l'état a été mis à jour.

Nous ne devrions pas jouer avec async / attendre ici et retarder le rendu. Le rendu doit être rapide et rapide et nous devons nous attendre à ce que les données n'arrivent pas encore lorsque nous rendant la page. P>

Donc, pour une victoire rapide,: P>

export default class booksComponent extends Component{

state = {
  books: null,   // we start with not having a books, later it's an array of books
}

getBook() {

   // ...
   // instead of return(newArray) inside your method, say:
   this.setState({books: newArray});
}

componentDidMount() {
   if (this.state.books === null) {
      this.getBooks();  // here we start the accessing the db
   }
}

render(){
  return(
    <div>
         <button/>
    <div>
     ------
     {this.state.books && this.state.books.map((book) => {
       return <p key={book.bookName}>{book.bookName} by {book.author}</p>
     })}
     </div>
 </div>
  )};
};


0 commentaires

2
votes

Essayez ceci xxx


2 commentaires

Bind onclick sur le nouveau bouton La méthode getbook et non le résultat de ce fait;) (et aidez-vous à donner au bouton un texte visible: D)


En fait, je viens de l'appeler accidentellement. Je ne peux tout simplement pas l'appeler et le transmettre.