Tengo un elemento iframe dentro de mi componente y necesito detectar de alguna manera cuándo cambia la URL de ese iframe. Lo que he probado hasta ahora:
onLoad , pero esto no se activa cada vez que redirijo en el iframeReact.useCallback pero tampoco funciona como queríatimeout y obtenga la URL del iframe cada x segundosEjemplo de código minimalista a continuación
export const XComponent = (props: XComponentProps) => { const ref = React.useRef<any>(); 1. const onLoad = () => { const url = ref.current.contentWindow.location.href; // do stg with url } 2. const getRef = React.useCallback((node: any) => { // store node into state, this was not triggered properly either }, []); 3. React.useEffect(() => { const interval = setInterval(() => { const url = ref.current.contentWindow.location.href; }, 1000); return () => clearInterval(interval); }, []); return ( <div className={ styles.albertStoremanTab }> <div className={ styles.container }> <iframe id={"iframe-my-id"} onLoad={onLoad} src={props.defaultUrl} ref={ref}></iframe> </div> </div> ); };Así de simple:
useEffect(() => { // It runs only when defaultUrl changes }, [props.defaultUrl])¿Intentó usar ref.current en la matriz de dependencias de useEffect?
useEffect(() => { setURL(ref.actual.contentWindow.ubicación.href) }, [ref.actual])