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

281
Visualizações
React Native useEffect funciona al guardar el archivo

Estoy desarrollando una aplicación de chat de video usando react-native-voximplant , todo funciona, pero cuando la aplicación se carga por primera vez, la funcionalidad de inicio de login ocurre dentro de useEffect . Entonces, el problema es que, cuando mi HomeScreen se monta, useEffects debería activarse y debería iniciar sesión en voximplant sdk y ahora, si toco el ícono de llamada, se muestra lo siguiente en la consola:

Cuando se monta HomeScreen:

 LOG Client: emit: no handlers for event: AuthResult LOG Error while trying to login to voximplant: {"code": 491, "name": "AuthResult", "result": false} LOG Client: emit: no handlers for event: ConnectionEstablished

Ahora, cuando toco en llamar para hacer una llamada:

 // after a second... WARN Possible Unhandled Promise Rejection (id: 0): "NOT_LOGGED_IN"

Ahora, cuando presiono guardar (ctrl + s) , inicio sesión y ahora, si hago una llamada, ¡funciona! No sé qué estoy haciendo mal aquí. ¿Hay algún problema con useEffect o estoy haciendo algo mal?

El código de la pantalla de inicio:

 import {Voximplant} from 'react-native-voximplant'; const HomeScreen = () => { const voximplant = Voximplant.getInstance(); useEffect(() => { const signInToVoximplant = async () => { try { const fqUsername = '...'; // credentials are correct, don't worry about them. const password = '...'; await voximplant.login(fqUsername, password); } catch (error) { console.log('Error while trying to login to voximplant: ', error); } }; signInToVoximplant(); }, []); useEffect(() => { const connect = async () => { const status = await voximplant.getClientState(); if (status === Voximplant.ClientState.DISCONNECTED) { await voximplant.connect(); } else if (status === Voximplant.ClientState.LOGGED_IN) { console.log('[INFO] VOXIMPLANT CONNECTED'); return; } }; connect(); }, []); } return ...

La call solo funcionará si ctrl+s , es decir, guardo el archivo, de lo contrario arrojará un Unhandled Promise rejection... porque no está conectado, sin embargo, he escrito/proporcionado el inicio de sesión dentro de useEffect .

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Según sus registros, cuando se inicia la aplicación, el inicio de sesión falla con el error 491, lo que significa que el cliente se encuentra en un estado no válido. Ocurre porque invoca la API de inicio de sesión antes de que se establezca la conexión con Voximplant Cloud (API de conexión).

Cuando se vuelve a cargar la aplicación, el código nativo no se reinicia (pero js sí) y, de hecho, el cliente todavía está conectado a Voximplant Cloud, por eso el inicio de sesión es exitoso la segunda vez.

Para solucionar el problema, debe cambiar el orden de invocación de la API del SDK de Voximplant: primero llame a la API Client.connect y luego a Client.login.

También es mejor mover connect/login a un solo useEffect.

about 4 years ago · Juan Pablo Isaza Relatório

0

  • Ambos useEffect se ejecutan montados, pero ¿cuál primero?.

  • Intenta poner ambas funciones en el mismo useEffect y llámalas en orden:

 useEffect(() => { const signInToVoximplant = async () => { ... }; const connect = async () => { ... }; signInToVoximplant(); connect(); }, []);
about 4 years ago · Juan Pablo Isaza 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