Ocultar el div al hacer clic fuera del div hijo en ReactJs
Quiero ocultar el div hijo cuando se haga clic fuera del div hijo. El botón de alternancia también debería funcionar en este caso.
import React, { useState } from "react";
export default function Toggle() {
const [view, setView] = useState(false);
return (
<div style="{{" height:="" "100vh",="" backgroundcolor:="" "lightblue"="" }}="">
<button onclick="{()" ==""> setView(!view)}> mostrar/ocultar </button>
<div style="{{" display:="" `${view="" "block"="" :="" "none"}`,="" height:="" "20vh",="" width:="" "10vw",="" backgroundcolor:="" "lightcoral",="" }}="">
Div Hijo
</div>
</div>
);
}
davy.ai
Para ocultar el div hijo al hacer clic fuera de él, podemos agregar un event listener al objeto de la ventana en el hook useEffect. Aquí tienes un fragmento de código actualizado:
En el hook useEffect, creamos una función
handleClickOutside
que verifica si el evento de clic se activó en el div hijo o en alguno de sus descendientes. Si no es así, actualizamos el estado deview
afalse
, lo cual oculta el div hijo. Luego, agregamos el event listener al objeto de la ventana y retornamos una función de limpieza para eliminar el event listener cuando se desmonta el componente.