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

117
Visualizações
Evite que se envíen varias solicitudes de recuperación no deseadas durante la re-renderización

Creé una aplicación de reacción usando react-hook-speech-to-text . Convierte la voz en texto y envía este texto a una base de datos mongodb a través de un servidor de nodo backend. Si un usuario dice "hola mundo", lo convertirá en una cadena y la almacenará en una matriz llamada resultados . Se suponía que la aplicación que construí enviaría cada cadena una vez a la base de datos, pero envía múltiples solicitudes de recuperación y llena la base de datos con copias innecesarias de la misma cadena. A continuación se muestra el código que he escrito en el archivo App.js. Quiero que solo envíe una solicitud de búsqueda por nueva cadena convertida a texto.

 import React from 'react'; import useSpeechToText from 'react-hook-speech-to-text'; export default function App() { const { error, interimResult, isRecording, results, startSpeechToText, stopSpeechToText, } = useSpeechToText({ continuous: true, useLegacyResults: false, }); if (error) return <p>Web Speech API is not available in this browser 🤷‍</p>; return ( <div className='min-h-screen flex justify-center items-center bg-indigo-400'> <div className='flex flex-col justify-center'> <h1 className='uppercase text-3xl bold text-white text-center'> Recording: {isRecording.toString()} </h1> <button className='bg-white text-indigo-400 px-4 py-2 rounded border-white border-2 transition hover:bg-indigo-400 hover:text-white' onClick={isRecording ? stopSpeechToText : startSpeechToText} > {isRecording ? 'Stop Recording' : 'Start Recording'} </button> <ul> {results.map((result) => { try { fetch('http://localhost:8000/api/commands', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ command: result.transcript }), }) .then((res) => res.json()) .then((myRes) => console.log(myRes)); } catch (error) { console.log('Error posting data: ' + error); } return <li key={result.timestamp}>{result.transcript}</li>; })} {interimResult && <li>{interimResult}</li>} </ul> </div> </div> ); }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Recomiendo crear un componente separado para un elemento de result . Allí puede agregar un gancho useEffect .

La dependencia de useEffect debería ser básicamente lo que haría necesaria una nueva recuperación si cambia , es decir, probablemente su result.transcript .

Eso es fácil si result.transcript es solo una cadena, entonces podría simplemente pasar la transcript al componente, colocarla en las dependencias y los parámetros de obtención.

El resultado de la recuperación debe devolverse mediante algún tipo de devolución de llamada en lugar de simplemente devolverse.

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