我正在使用react-player来渲染 youtube 视频map()
,如下所示:
class Jukebox extends Component {
constructor (props) {
super(props);
this.state = {
youtube_urls:[],
clients:[],
};
};
componentDidMount() {
if (this.props.isAuthenticated) {
this.getItems();
}
};
getItems(event) {
const {userId} = this.props
const options = {
url: `${process.env.REACT_APP_WEB_SERVICE_URL}/jukebox/${userId}`,
method: 'get',
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': true,
Authorization: `Bearer ${window.localStorage.authToken}`
}
};
return axios(options)
.then((res) => {
console.log(res.data)
console.log(res.data.data)
this.setState({
clients: res.data.data[0].clients,
youtube_urls:res.data.data[0].youtube_urls
})
})
.catch((error) => { console.log(error); });
};
render() {
const { youtube_urls } = this.state;
return (
<div>
<h1 className="title is-1">Jukebox</font></h1>
{
clients.map((client, index) => {
/*
Obtain preview from state.previews for current artist index
*/
const audio = youtube_urls[index]
/*
Render current client data, and corresponding audio url
*/
return(
<div key={index}>
<ul>
<ReactPlayer
url={ audio }
controls
playing // <--- does not work
width='50'
height='150'
/>
<div className="Line" />
</ul></div>
)
})
})
};
根据库道具之一playing
(见上文),您可以在渲染完成时自动播放媒体,但如果我使用map()
这将导致所有视频同时播放。
同时,还有回调 prop onReady()
:
当媒体加载并准备好播放时调用。如果播放设置为真,媒体将立即播放。
问题:
在加载所有媒体之后,如何实现这一点并让所有视频从索引 0 开始播放,一次播放一个?