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

84
Vistas
Reaccionar escuchar la devolución de llamada de objeto global

Estoy trabajando en un SDK. Actualmente es compatible con JavaScript, sin embargo, necesita admitir React (y posiblemente Vue/Angular en el futuro).

Primero carga el SDK a través de un script. Luego modifica un elemento con el sdk-id . El usuario interactúa con el elemento y el SDK activa una devolución de llamada, AppNameSDK.callback(data) . Todo esto funciona bien en javascript vainilla, sin embargo, para React tengo problemas para descubrir cómo llamar a una devolución de llamada dentro del componente React.

En breve. ¿Cómo puedo A) llamar a una función/método de React Components desde un objeto cargado externamente o B) cambiar una función de objetos cargados externamente a través de un componente React?

Ejemplo de Vanilla Code (sin problemas)

 <div id="sdk-id" data-foo="foo" data-bar="bar"> </div> <script src="https://example.com/sdk/v1/client-id"></script> // Loads obj called AppNameSDK <script type="text/javascript"> AppNameSDK.callback = (data) => { console.log("data",data) } </script>

Ejemplo de React Code (no se puede acceder a la devolución de llamada)

 import React,{useEffect} from 'react'; const useScript = (url,loadFunc,errorFunc) => { useEffect(() => { const script = document.createElement('script'); script.src = url; script.async = true; document.body.appendChild(script); script.addEventListener('load', function () { if(loadFunc !== undefined && typeof loadFunc === "function"){ loadFunc(); } }); script.addEventListener('error', function (e) { console.log(); if(errorFunc !== undefined && typeof errorFunc === "function"){ errorFunc(); } }); return () => { if(document.body.contains(script)){ document.body.removeChild(script); } } }, [url,loadFunc,errorFunc]); }; const Test = () => { let scriptSrc = "https://example.com/sdk/v1/client-id"; useScript(scriptSrc); // Need to figure out how to call this function const callback = (data) => { console.log("data",data); } return ( <div className="test"> <h3>Test Component</h3> <div id="sdk-id" data-foo={"foo"} data-bar={"bar"}> </div> </div> ); }; export default Test;
about 4 years ago · Juan Pablo Isaza
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