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

135
Vistas
Alternar el botón reproducir/pausar en Siguiente con audio mp3

Estoy construyendo mi sitio web y quiero un botón en la parte inferior de mi página, que reproducirá/pausará una canción usando useSound. Se reproduce cuando hago clic por primera vez, pero luego no puedo detener mi canción.

¿Alguien puede señalarme en la dirección correcta? Por favor vea mi código abajo.

 import useSound from 'use-sound'; import galaxySfx from '../../public/sounds/galaxy.mp3'; import styles from "./sound.module.scss"; import Aos from "aos"; import "aos/dist/aos.css"; const PlayButton = ({}) => { const [play, { stop, isPlaying }] = useSound(galaxySfx); function playSong() { isPlaying === true; play(); } function stopSong() { isPlaying === false; stop(); } return ( <div className={styles.playButton}> <button data-aos="zoom-in" data-aos-offset="100" onClick={isPlaying ? stopSong() : playSong()} > 🎺 </button> </div> ); }; export default PlayButton;

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

0

Después de leer la use-sound documentation , no vi ningún valor isPlaying del segundo valor devuelto que está desestructurando.

Por lo tanto, isPlaying no estará definido, pero puede realizar un seguimiento del estado de reproducción con un useState.

 ... import { useState } from "react"; const PlayButton = ({}) => { const [isPlaying, setIsPlaying] = useState(false); const [play, { stop }] = useSound(galaxySfx); function playSong() { setIsPlaying(true); play(); } function stopSong() { setIsPlaying(false); stop(); }

El accesorio onClick espera que se llame a una función, por lo que no debe llamar a ninguna de las funciones que le pasa.

 return ( <div className={styles.playButton}> <button data-aos="zoom-in" data-aos-offset="100" onClick={isPlaying ? stopSong : playSong} > 🎺 </button> </div> ); }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Podría usar el mismo controlador para ambas operaciones. Verifique el estado de la variable isPlaying y actúe en consecuencia:

 function togglePlay(){ if(isPlaying){ stop(); } else{ play(); } }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Simplemente elimine el corchete, de esta manera las funciones no se ejecutarán a menos que haga clic en

 onClick={isPlaying ? stop: play}
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