0
votes

Réagir non fermant la boîte de dialogue

IM Utilisation de MatérialUI Pour cliquer sur un élément de menu qui ouvre une boîte de dialogue (composant enfant) Toutefois, une fois que la boîte de dialogue s'ouvre, il semblerait de fermer et de mettre à jour les données de noticemodal . Il n'y a aucune erreur d'erreur et je crois que cela a à voir avec l'utilisation d'utiliser useeffect à setnoticemodal (accessoires) pour l'état initial. Ive essayé de supprimer le useeffect () et de lancer apps.open dans le par défaut d'envoi () pour le notifemodal En faisant cela, ma boîte de dialogue ne s'ouvrira plus du tout. Qu'est-ce que je cherche ici?

HolidaySettings.js xxx

HolidayDialog.js < Pré> xxx


1 commentaires

Console.log of Handleclose connecte-t-il sur l'événement ONCLOSE?


3 Réponses :


0
votes

à l'intérieur de l'USEEffect, vous réinitialisez la valeur noticemodal code> à ProPs.Open code> que je crois est vrai?

Je crois que ce que vous essayez de faire est défini la valeur initiale de noticemodal. Essayez de changer le code ci-dessous et supprimez l'USEFFECT P>

const [noticeModal, setNoticeModal] = useState(props.open);


1 commentaires

dans ma question, j'ai commencé quand je l'ai fait, la boîte de dialogue ne s'ouvrira même pas



1
votes

Pourriez-vous essayer cela?

Je suppose que ProSyst à Props.Onclose STRUT> fait Dialogopen strong> à faux fort> sur le parent ( HolidaySettings strong>) p> xxx pré>

si projecs.onClose strong> ne fait pas dialogopène fort> à faux fort> faux fort > sur le parent ( HolidaySettings strong>). Vous pouvez ajouter un attribut Fermer qui définit dialogopène fort> sur false. p> xxx pre>

et en passant Props.open Strong> à la boîte de dialogue P>

<Dialog
  open={props.open}
/>


2 commentaires

Où est apps.close () venant de?


@Dipesh je l'ai compris sur accessoires



1
votes

Vous ne fournissez aucune dépendance à useeffect code> de sorte qu'il fonctionne à chaque re-rendu. Dans votre useeffect, vous basculez le mode modal et donc le problème.

useEffect(() => {
        setNoticeModal(props.open) 
    }, [props.open]); //<----- props.open


3 commentaires

Cela fonctionne pour la fermeture de la boîte de dialogue! Cependant, il semble présenter un nouveau problème, à proximité, je ne peux plus ouvrir la boîte de dialogue jusqu'à ce que je rafraîchis la page?


C'est parce que ProPs.Open est toujours vrai. L'avez-vous faite de faux après la fermeture de la dialogue? Je suppose que tu ne fais que "noticemodal" faux


@Dipedeshkc Comment allourais-je continuer à faire de faux faux?