Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

150
Vistas
El código de muestra del portal de React TypeScript Cheatsheet parece roto

Estoy usando una versión bastante estricta de TS y ESLint.

Extraje este portal de los documentos aquí: https://react-typescript-cheatsheet.netlify.app/docs/basic/getting-started/portals/

Modifiqué el código a lo siguiente:

 import React, { useEffect, useRef, ReactNode } from 'react'
import { createPortal } from 'react-dom'

interface Props {
 children?: ReactNode
 portalId: string
}

export const Portal: React.FC<Props> = ({ children, portalId }) => {
 const el = useRef(document.createElement('div'))

 useEffect(() => {
 const portalRoot = document.querySelector(`#${portalId}`) as HTMLElement

 const current = el.current

 portalRoot.appendChild(current)
 return () => void portalRoot?.removeChild(current) // error thrown here?
 }, [portalId])

 return createPortal(children, el.current)
}

Error a continuación:

Esperaba 'indefinido' y en su lugar vio 'vacío'

Cuando elimino el void (no puedo usar undefined , de lo contrario, el resto del código es inalcanzable), como tal:

 import React, { useEffect, useRef, ReactNode } from 'react'
import { createPortal } from 'react-dom'

interface Props {
 children?: ReactNode
 portalId: string
}

export const Portal: React.FC<Props> = ({ children, portalId }) => {
 const el = useRef(document.createElement('div'))

 useEffect(() => {
 const portalRoot = document.querySelector(`#${portalId}`) as HTMLElement

 const current = el.current

 portalRoot.appendChild(current)
 return () => portalRoot?.removeChild(current) // how to fix?
 }, [portalId])

 return createPortal(children, el.current)
}

Esto da como resultado otro error:

 Argument of type '() => () => HTMLDivElement' is not assignable to parameter of type 'EffectCallback'.
 Type '() => HTMLDivElement' is not assignable to type 'void | Destructor'.
 Type '() => HTMLDivElement' is not assignable to type 'Destructor'.
 Type 'HTMLDivElement' is not assignable to type 'void | { [UNDEFINED_VOID_ONLY]: never; }'

¿Como arreglar?

almost 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Simplemente significa que el "Destructor" (es decir, la función de limpieza que devuelve el useEffect ) no debería devolver nada.

Pero dado que usa una forma abreviada de función de flecha, su resultado se devuelve automáticamente. Simplemente envuélvalo con llaves, por ejemplo, para evitar el retorno automático:

 return () => {
 portalRoot?.removeChild(current)
}
almost 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda