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

260
Visualizações
how to stop song on toggle button in react js

This is the shortcode for play song on toggle button and my problem is when I click the toggle button to pause the music did not paused

import { React, useState } from 'react';    
import './audio.css';
import music from './BLOOD.mp3';

const PlaySong = () => {
var song = new Audio(music);
const [playMusic, setPlayMusic] = useState(false);
const handlePlayMusic = () => {
let state = !playMusic;
setPlayMusic(state);
console.log(state);
if(state === true){
song.play()
} else {
song.pause();  // the song did not stop when I call this method I don't 
know why        
}
}
return (
    <div className="container">
        <div className="button r" id="button-4">
            <input type="checkbox" className="checkbox" onChange= 
            {handlePlayMusic} />
            <div className="knobs" />
            <div className="layer" />
        </div>
    </div>
)
}

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

0

Finally, it's working and that is the code:

const [activeSong, setActiveSong] = useState(false);
var [saveSong, setSaveSong] = useState({});

var drake = {
    value: 3,
    name: 'Energy',
    artist: 'Drake',
    audio: music, // I get it from import music './song.mp3'
};

function handlePlayPause() {
    let states = !activeSong;
    setActiveSong(states);

    if (states) {  
        playSong(drake); // load song and play it
    }
    else {
        togglePause(saveSong); // pause song
    }

}

function playSong(drake) {
    var Song = new Audio(drake.audio);
    Song.play();
    setSaveSong(Song);
    return Song;
}

function togglePause(saveSong) {
    saveSong.pause();
    setSaveSong({});
}
about 4 years ago · Juan Pablo Isaza Relatório

0

In your code, playMusic state is always false meaning that your else block in handlePlayMusic() method will never be reached. You need to call setPlayMusic to toggle the state after playing/pausing.

Also, you don't need two variables for one single state, so you don't need state variable.

Suggested code:

const [playing, setPlaying] = useState(false);

const handlePlayClick = () => {
  setPlaying(prevPlaying => {
    if (prevPlaying) {
      song.pause();
    } else {
      song.play(); // might need to consider calling `resume`
    }

    return !prevPlaying;
  });
};
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