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

237
Vistas
El control deslizante de volumen reproduce correctamente los archivos de audio al hacer clic, pero no cambia el volumen de las pulsaciones de teclas para el mismo elemento

Básicamente, si cambio el nivel del control deslizante, solo afecta el clic y no también el keydown, aunque llaman a la misma función playSound. No estoy seguro de lo que he estropeado

 function App() { const [soundText, setSoundText] = useState(); const [volumeLevel, setVolumeLevel] = useState(0.5) };

Lo tengo dividido por componente, tuve que cortar la mayor parte del componente de la aplicación para publicar, pero entiendes el punto

 function DrumPad({ pad, setSoundText, volumeLevel }) { useEffect(() => { document.addEventListener('keydown', handleKeyPress); return () => { document.removeEventListener('keydown', handleKeyPress) }; }, []); const playSound = () => { const audioTag = document.getElementById(pad.letter); audioTag.volume = volumeLevel; audioTag.play(); setSoundText(pad.id) } const handleKeyPress = (e) => { if(e.keyCode === pad.keyCode){ playSound(); } } return ( <div className="drum-pad" id={pad.id} onClick={playSound}> <p>{pad.letter}</p> <audio src={pad.src} className="clip" id={pad.letter}> </audio> </div> ) }
 function VolumeBar({ setSoundText, volumeLevel, setVolumeLevel }) { const volumeChanger = (e) => { setVolumeLevel(e.target.value) } return ( <div className="slide-container"> Volume <input id="myRange" type="range" min='0' max='1' step= '0.01' value={ volumeLevel } onChange={ volumeChanger } className="slider" /> </div> ) }

Gracias

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

En lugar de usar el detector de eventos, que no se recomienda en reaccionar, intente agregar accesorios onKeyDown a la entrada.

 <input id="myRange" type="range" min='0' max='1' step= '0.01' value={ volumeLevel } onChange={ volumeChanger } onKeyDown={(e) => { if(e.keyCode === pad.keyCode){ playSound(); }}} className="slider" />
about 4 years ago · Juan Pablo Isaza 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