0
votes

ComponentWillreceiveProps mettra à jour l'état uniquement si je rafraîchis la page.

Bonjour tout le monde Pouvez-vous m'aider à m'aider avec ceci:

J'utilise React + Firebase + ReDux P>

Les dernières lignes de la classe ressemblent à ceci (la page de poste d'édition): P >

componentWillReceiveProps(nextProps) {
    const { post } = nextProps;
    console.log(post);
    this.setState({
      title: post.title,
      content: post.content
    });
  }


3 commentaires

Vous ne devez pas utiliser de composantWillreceiveProps, il est obsolète depuis la version 16 et sera supprimé dans la version 17. Utilisez Statique GetDeriveDeStateFromProps .


Hey Piotr, j'ai essayé le Statique GetDeriveDeStateFromProps Mais cette fonction est statique et il n'a pas d'accès à this.state . que devrais-je faire ?


GetDeriveStateFromProps a deux paramètres: accessoires, état . Comme vous pouvez le constater, d'abord l'un est des accessoires actuels et la deuxième est l'état actuel. Vous devez retourner un nouvel état dans cette méthode, il semble donc que cela ressemble à ceci: Statique GetDeredStateDefromProps (accessoires, état) {let Newstate = {... Etat}; newstate.foo = Props.foo; retournetate de retour; }


3 Réponses :


0
votes

Je pense que vous pourriez être oublié d'appeler la fonction d'expédition dans votre code. Par exemple, comme ceci: cela.Props.editpost (ID, POST); // Cela mettra à jour les données de votre magasin Redux. Et vous pouvez ensuite rechercher des données mises à jour de votre magasin Redux Store.


2 commentaires

Bonjour J.Odrin, merci de répondre. Je n'essaie pas d'appeler la fonction EditPost ici, je veux simplement obtenir les données de Firebase au formulaire en premier. Et dans mon cas, les données proviennent de Firebase, mais ce n'est pas mis à jour en direct. Le seul moyen est de rafraîchir la page


Donc, je ne peux pas vous comprendre, je pense que certains événements devaient récupérer des données de votre magasin, comment définirez-vous l'événement pour récupérer des données de votre magasin? Si vous ne définissez aucun événement dans votre composant, le composantWillreceiveProps Func ne tirera jamais sans rafraîchir.



0
votes

composantwillreceiveProps est obsolète, utilisez composantDidUpdate : xxx


1 commentaires

Merci Mohammed Ramrami Pour répondre, j'ai essayé le composantDidUpdate, mais cela affiche cette erreur ne peut pas lire la propriété 'Titre' de NULL Cela signifie que le poste n'a pas encore mis à jour. J'ai changé l'ensemble de l'ensemble comme ceci this.setstate ({Titre: post? Post.title: "", Contenu: Post? Post.Content: ""}); Mais cela n'a pas non pas fonctionné (Profondeur de mise à jour maximale dépassée)



0
votes

Le problème a été corrigé, merci tout le monde:

La solution: Débat de l'utilisation de ce: p>

  static getDerivedStateFromProps(nextProps, state) {
    const { post } = nextProps;
    return {
      title: post ? post.title : "",
      content: post ? post.content : ""
    };
  }


0 commentaires