javascript - 如何使用 API 响应创建反应视频播放器
问题描述
这里是 React 视频播放器的代码,使用本地存储视频来创建 React 播放器
视频播放器 :
import React from 'react';
import VideoPlayer from 'react-video-js-player';
import ban1 from './video/ban1.mp4'
const VideoJS = () => {
const videoSrc = ban1;
const poster = "https://unsplash.com/photos/ZRns2R5azu0"
return (
<div className="App">
<h1> Fraction Video player</h1>
<center><VideoPlayer src={videoSrc} poster={poster} width="720" /></center>
</div>
);
};
export default VideoJS;
之后,我创建了一些表单并发布date
,向 API 发送请求,并像这样从 API 获取响应,
["/home/vinsent/Videos/Fraction_webapp/FastAPI-RedisDB/videos/video7.mp4", "/home/vinsent/Videos/Fraction_webapp/FastAPI-RedisDB/videos/video19.mp4"]
现在如何将它作为动态 URL 传递给视频播放器
API调用代码:
import React, { Component } from 'react'
import axios from 'axios'
class PostForm extends Component {
constructor(props) {
super(props)
this.state = {
key: '',
// Where data will be saved.
data: [],
}
console.log(this.state)
}
changeHandler = e => {
this.setState({ [e.target.name]: e.target.value })
}
submitHandler = e => {
e.preventDefault()
axios
.get(`http://127.0.0.1:8000/hvals_hash?key=${this.state.key}`)
.then(response => {
// Updating the state to trigger a re-render
this.setState({data: response.data});
console.log(response.data)
})
.catch(error => {
console.log(error)
})
}
render() {
const { key } = this.state
return (
<center><div>
<form onSubmit={this.submitHandler}>
<div>
<h2> DATE PICKER</h2><br></br>
<input
type="text"
name="key"
value={key}
onChange={this.changeHandler}
/>
</div>
<br></br>
<button type="submit">Submit</button>
</form>
<div>
{this.state.data.map((videoURL) => {
return (
<div>
<br></br>
{
<table>
<ol>
{videoURL}
</ol>
</table>
}
</div>
);
})}
</div>
</div></center>
)
}
}
export default PostForm
预期答案:
如何将动态 URL 传递给视频播放器
如何通过本地视频路径反应视频播放器
解决方案
您可以按照您想要的方式将react-player包用于视频或媒体目的。它还支持动态 URL。
如果您将视频路径存储在 state 中,而不是 const;您可以轻松处理动态 URL。
const [videoUrl, setVideoUrl] = useState('insertvideourlhere')
推荐阅读
- javascript - 表的类(使用 createElement 创建)在此代码中无法正常工作
- go - 是否可以在处理时将项目添加到 Go 通道?
- html - 为什么我的浮动向左而不是向右?
- python - 有效地将列表列表附加到 pandas DataFrame
- php - 有没有更好的方法将嵌套 for 循环中的变量从控制器传递到视图?
- python - 如何删除所有列但不首先删除以模式开头的列?
- java - 复合未来未完成
- scala - 错误:找不到类型 org.apache.spark.sql.Dataset[(String, Long)] 的编码器
- linq-to-sql - 如果包含组连接,则 SQL 语句中将忽略 Linq Take
- python - 内部类定义不断要求自我论证