1
resposta

Eu abro um Modal no react e ele não fecha.

Ao abrir um Modal ele aparece normalmente, porém ao clicar no botão fechar, ele não fecha mesmo retornando o console.log.

const [modalOpen, setModalOpen] = useState(false)

    function openModal() {
        setModalOpen(true)
    }
    function closeModal() {
        setModalOpen(false)
        console.log('Fechou')
    }

    useEffect(() => {
        console.log('Abriu')
    }, [modalOpen])


<div className='modal'>
                    <Button onClick={openModal}>
                        <BiUser />
                        <Modal
                            isOpen={modalOpen}
                            onRequestClose={closeModal}
                            contentLabel='Exemple Modal'
                            overlayClassName='modal_user'
                            className='modal_box'
                        >
                            <p>Faça seu cadastro</p>
                            <hr/>


                            <Button onClick={closeModal}>Fechar</Button>

                        </Modal>
                    </Button>
                    <Botao>
                        <BiShoppingBag className='botao_loja' />
                    </Botao>
          </div>
1 resposta

Olá Bruno, tudo bem? Pelo código que você postou, parece que o problema está na forma como você está utilizando o Modal do React. Uma sugestão é que você tente utilizar a propriedade "isOpen" do Modal para controlar a abertura e o fechamento do modal.

No seu código, você está passando a propriedade "isOpen" como "modalOpen", que é o estado que você está utilizando para controlar a abertura do modal. No entanto, você está passando a função "closeModal" como "onRequestClose", que é a função que o Modal chama quando o usuário clica no botão de fechar.

Uma forma de corrigir isso seria passar a função "closeModal" como "onRequestClose" e utilizar a propriedade "isOpen" do Modal para controlar a abertura e o fechamento do modal. Por exemplo:

<Modal
  isOpen={modalOpen}
  onRequestClose={closeModal}
  contentLabel='Exemple Modal'
  overlayClassName='modal_user'
  className='modal_box'
>

Dessa forma, quando o usuário clicar no botão de fechar, a função "closeModal" será chamada e o estado "modalOpen" será atualizado para "false", fechando o modal.

Espero ter ajudado e bons estudos!