【发布时间】:2022-01-15 11:50:07
【问题描述】:
我认为我需要使用状态来跟踪正在播放的歌曲,但我无法实现它。我不确定传递哪个参数来响应音频播放器或在哪里设置状态。这可能吗?这是整个组件的样子:
import { useState, useEffect } from 'react';
import ReactAudioPlayer from 'react-audio-player';
import { useSelector, useDispatch } from 'react-redux';
import { NavLink, useParams } from 'react-router-dom';
import { deleteSong, getOneSong } from '../../store/song';
import EditSongForm from '../EditSongForm';
const SpecificSong = ({ id, songName, songLink, userId, albumImage }) => {
const [editShowForm, setEditShowForm] = useState(false);
// const [currentlyPlayingSong, setCurrentlyPlayingSong] = useState(false)
const dispatch = useDispatch();
useEffect(() => {
dispatch(getOneSong(id));
setEditShowForm(false);
}, [dispatch, id]);
const editFormCheck = (e) => {
if (editShowForm) setEditShowForm(false)
if (!editShowForm) setEditShowForm(true)
}
const remove = (e) => {
dispatch(deleteSong(e.target.id));
}
const user = useSelector((state) => state.session.user);
const CurrentUserId = user?.id
return (
<div className='songdetails' key={id}>
<NavLink to={`/song/${id}`}>
<p className='songname' key={id}>{songName}</p>
<img className="albumimage" src={albumImage} alt="album image" srcset="" />
<ReactAudioPlayer
className='audioplayer'
src={songLink}
controls
key={songLink}
/>
</NavLink>
{userId === CurrentUserId ?
<>
<div className='editbutton'>
<EditSongForm props={id} />
</div>
<div className='removebutton'>
<button id={id} onClick={remove}>Delete Song</button>
</div>
</>
: null}
</div>
);
};
export default SpecificSong;
【问题讨论】:
标签: javascript reactjs sequelize.js use-effect audio-player