Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

160
Visualizações
¿Tiene sentido que un modal administre su propio estado?

Así que he estado pensando en esto por un tiempo, y me gustaría tener esto resuelto de una vez por todas. Si es posible, sería genial explicar por qué piensas que cualquier forma funciona. ¿Tiene sentido que un Modal administre su propio estado o esto debería ser administrado por su Padre? En el código a continuación, el primer Modal es tonto y está completamente administrado por su Padre. En el segundo Modal, puede ser administrado tanto por su Padre como por sí mismo.

 import Button from "../components/button"; const Modal = (props: { onClose: () => void }) => { const { onClose } = props; return ( <> <div className="wrapper"> <p>Hello modal</p> <button onClick={() => onClose()}>Close</button> </div> </> ); }; const ModalWithState = (props: { active?: boolean; onClose: () => void }) => { const { active, onClose } = props; const [activeS, setActiveS] = useState(false); useEffect(() => { if (!active && !hasParentControl()) { setActiveS(true); return; } setActiveS(active); }, [active]); const hasParentControl = () => typeof active !== null; const onCloseModal = () => { setActiveS(false); onClose(); }; return ( <> {activeS && ( <div className="wrapper"> <p>Hello modal</p> <button onClick={() => onCloseModal()}>Close</button> <button onClick={() => setActiveS(true)}>Open</button> </div> )} </> ); }; const ParentComponent = () => { const [activeModal, setActiveModal] = useState(false); const openModal = () => setActiveModal(true); return ( <> {activeModal && <Modal onClose={() => setActiveModal(false)} />} <ModalWithState active onClose={() => setActiveModal(false)} /> <Button onClick={() => openModal()}>Open modal</Button> </> ); };
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

No hay una respuesta correcta o incorrecta a esto. Puede implementar un modal en 1 de un millón de formas y depende completamente de su caso de uso.

En la mayoría de las situaciones, descubrí que los modales con estado tienden a ser más favorables para su reutilización, pero incluso eso es exagerado.

about 4 years ago · Juan Pablo Isaza Relatório

0

En su ejemplo, mantiene el estado activo dos veces, esto introduce más código y es más fácil cometer un error de esta manera. True para cualquier componente secundario.

Y dado que no puede evitar el estado principal, solo el padre sabe cuándo abrir el modal. Creo que deberías saltarte el estado del niño.

Habiendo dicho eso, siempre puede representar el componente modal y dejar que decida si representa su contenido mediante accesorios.

** hay formas de mantener el estado 'isOpen' solo en el elemento secundario, pero implica exponer una función en el elemento secundario y dejar que el padre la llame. Que es una especie de antipatrón para reaccionar

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda