Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.4K
Visualizações
React Native: llame a la función Swift nativa que llama a otra función que activa el evento de envío RCTEventEmiiter que provoca un error RCTCallableJSModules

Tengo esta clase Swift, la función emitLogEvent llama a RCTEventEmitter sendEvent que se está escuchando en React Native. Si llamo a esta función directamente desde React, el evento de envío funciona y puedo cerrar sesión en React Native.

 import Foundation import React @objc(NativeGlobalEventEmitter) class NativeGlobalEventEmitter: RCTEventEmitter { @objc func emitLogEvent() { sendEvent(withName: "globalEvent", body: ["count": 1]) } override func supportedEvents() -> [String]! { return [ "globalEvent" ] } override static func requiresMainQueueSetup() -> Bool { return true } override func constantsToExport() -> [AnyHashable : Any]! { return ["initialCount": 0] } }

Si introduzco otra clase simple con una función que llama a emitLogEvent

 import Foundation @objc(TestMe) class TestMe: NSObject { @objc func runTest() { print(200) let emitter = NativeGlobalEventEmitter() emitter.emitLogEvent(); } }

Y luego llame a runTest() desde React Native, se imprime 200 pero aparece el error

 Exception 'Error when sending event: globalEvent with body: { count = 1; }. RCTCallableJSModules is not set. This is probably because you've explicitly synthesized the RCTCallableJSModules in NativeGlobalEventEmitter, even though it's inherited from RCTEventEmitter.' was thrown while invoking runTest on target TestMe with params ( )

¿Por qué estaría pasando esto? Puedo llamar a cualquiera de las funciones directamente y funcionan, pero llamar a una función que emite un evento de otra clase provoca el error.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Encontré la solución aquí .

Este problema con esto es:

 func runTest() { print(200) let emitter = NativeGlobalEventEmitter() emitter.emitLogEvent(); }

Crear una instancia de NativeGlobalEventEmitter. Esto se debe a que RN ya creó el objeto y lo asignó al puente.

En su lugar, anula init() y establece una propiedad en la clase

 public static var shared: NativeGlobalEventEmitter? override init() { super.init() NativeGlobalEventEmitter.shared = self }

Entonces puedes usarlo así

 NativeGlobalEventEmitter.shared?.emitLogEvent()
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda