Вместо нижней строки
//header("Location:".ADMIN_URL."/index.php");
напишите
echo("<script>location.href = '".ADMIN_URL."/index.php?msg=$msg';</script>");
или
?><script><?php echo("location.href = '".ADMIN_URL."/index.php?msg=$msg';");?></script><?php
Это определенно решит вашу проблему. Я столкнулся с одной и той же проблемой, но решил решить эту проблему путем написания заголовка.
В моем тесте с вашим кодом я добавил свойство showPlayOnHover , чтобы заявить как ложное, чтобы обрабатывать кнопку, появляющуюся при наведении.
Добавлен метод рендеринга или нет кнопки:
handlePlayOnHover = (song) => {
this.setState({
showPlayOnHover: !this.state.showPlayOnHover,
isPlaying: !this.state.isPlaying
})
this.handleSongClick(song)
}
И структура рендеринга песни была обновлена до:
<tr
className="song" key={index}
onClick={() => this.handleSongClick(song)}
onMouseOver={() => this.handleOnHover(song)}
onMouseOut={() => this.handleOnHover(song)}
>
<td className="song-actions">
<button>
<span className="song-number">
{!this.state.showPlayOnHover ? index+1 : <span className="ion-play"></span>}
</span>
<span className="ion-play"></span>
<span className="ion-pause"></span>
</button>
</td>
<td className="song-title">{song.title}</td>
<td className="song-duration">{song.duration}</td>
</tr>
Метод handleOnHover take заботится об условном отображении кнопки воспроизведения при наведении и номера песни при наведении.