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 Réponses :
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. P>
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.
composantwillreceiveProps code> est obsolète, utilisez
composantDidUpdate code>:
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 code> 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: ""}); Code> Mais cela n'a pas non pas fonctionné (Profondeur de mise à jour maximale dépassée)
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 : "" }; }
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 Code>.
Hey Piotr, j'ai essayé le
Statique GetDeriveDeStateFromProps Code> Mais cette fonction est
statique code> et il n'a pas d'accès à
this.state code>. que devrais-je faire ?
GetDeriveStateFromProps code> a deux paramètres:
accessoires, état code>. 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; } code>