二、添加配置
播放按钮局中显示:class增加“vjs-big-play-centered”
import React, { useEffect, useRef } from 'react';
import VideoJs from 'video.js';
// import videozhCN from 'video.js/dist/lang/zh-CN.json'
import 'video.js/dist/video-js.css';
import styles from './index.less';
type VideoType = {
video: string;
photo: string;
const CommonVideo: React.FC<VideoType> = props => {
const videoRef = useRef<any>(null);
useEffect(() => {
const player = VideoJs(
videoRef.current,
autoplay: false, // 自动播放
muted: false, //静音
preload: 'auto', // 预加载
controls: true, // 是否显示控制条
controlBar: {
// 设置控制条组件
// /* 设置控制条里面组件的相关属性及显示与否
currentTimeDisplay: true,
timeDivider: true,
durationDisplay: true,
remainingTimeDisplay: true, // 显示倒计时时间
fluid: true,
language: 'zh-CN', // 设置语言
volumePanel: {
inline: false,
// */
/* 使用children的形式可以控制每一个控件的位置,以及显示与否 */
children: [
{ name: 'playToggle' }, // 播放按钮
{ name: 'currentTimeDisplay' }, // 当前已播放时间
{ name: 'progressControl' }, // 播放进度条
{ name: 'durationDisplay' }, // 总时间
// 倍数播放
name: 'playbackRateMenuButton',
playbackRates: [0.5, 1, 1.5, 2, 2.5],
name: 'volumePanel', // 音量控制
inline: false, // 不使用水平方式
{ name: 'FullscreenToggle' }, // 全屏
() => {
player.src(props.video);
player.poster(props.photo);
return () => {
player.dispose();
}, [props]);
return (
<video
ref={videoRef}
preload="true"
// className={styles.videoContent}
className={['video-js', 'vjs-16-9', 'vjs-big-play-centered', styles.videoContent].join(' ')}
playsInline
></video>
export default CommonVideo;
参考:https://blog.csdn.net/tangkthh/article/details/102862213
一、安装npm i video.js二、添加配置播放按钮局中显示:class增加“vjs-big-play-centered”import React, { useEffect, useRef } from 'react';import VideoJs from 'video.js';// import videozhCN from 'video.js/dist/lang/zh-CN.json'import 'video.js/dist/video-js.css';import.
import React from 'react' ;
import { useVideojs } from 'react-videojs-hook' ;
import 'video.js/dist/video-js.css' ;
const App = ( ) => {
const onPlay = ( currentTime ?: number ) => {
console . log ( "Video played at: " , currentTim
1.React Hooks简介
React Hooks就是用函数的形式代替原来的继承类的形式,并且使用预函数的形式管理state,有Hooks可以不再使用类的形式定义组件了。这时候你的认知也要发生变化了,原来把组件分为有状态组件和无状态组件,有状态组件用类的形式声明,无状态组件用函数的形式声明。那现在所有的组件都可以用函数来声明了。
2.useState多状态声明
useState是react自带的一个hook函数,它的作用是用来声明状态变量。
const [ c
首先我们知道Hook是可以100%向下兼容的,就是说即便在你以前的代码中加入hook写法也没有问题,同时提供了一个更直接的API包括props, state,context,refs以及生命周期,hook编写时使用的代码量也会更少,但这也是一个过渡,hook的使用去掉了class的概念,虽然以前的写法依旧可行,但新增hook的同时官方也表示没有计划移除class,这对程序员来说是很友好的,但react更推荐用户使用hook来编写代码
首先我们看一下state在传统和hook中的使用方式区别
首先演示.
文章目录一、React-Hook是什么?二、hook使用步骤2.1 State Hook2.2 Effect Hook2.3 Context Hook2.4 Reducer Hook2.5 callback Hook2.6 memoized hook2.7 useRef2.8 ImperativeHandle Hook总结
提示:以下是本篇文章正文内容,下面案例可供参考
一、React-Hook是什么?
Hook 是 React 的新增特性。它可以让你在不编写 class 的情况下使用 stat
一个简单的React钩子,可轻松将video.js与React集成
react-hook-videojs
由于video.js如何更改DOM,因此将video.js与React集成可能会有些棘手。 特别是如果您想支持video.js组件更新并正确处理任何旧播放器。
React Hooks帮助我们很好地打包了此程序,使用此程序包所需要做的就是:
import React from "react";
import { useVideoJS } from "react-hook-videojs";
const App = () => {
const videoUrl = "http://techslides.com/demos/sample-videos/small.mp4";
const { Video, player, ready } =
使用方法:
import React, { useEffect, useRef, useState } from 'react';
import videojs from 'video.js';
const videoDetailsDom = useRef();
const [flage,setFlage] = useState(true) //安卓12控制声音自动播放
let optiones
react 中使用 video.js 播放 hls(m3u8)格式的视频
简介:公司业务需求,由于后端把 mp4 视频转码成 m3u8 视频供手机端播放,导致后台系统播放不了 m3u8 格式的视频(原来是直接用的原生 video 标签播放)。
项目主要依赖:(先安装,步骤略)
create-react-app:3.0.0
"react": "^16.11.0",
"react-rout...
基于 react hooks 的 video 播放组件,结构简单,代码简洁,扩展方便。
ReactjsPlayer 遵循 少即是多(Less is more) 的设计原则,具有以下特点:
结构简单:使用 react hooks 做状态管理,将不同的状态拆分到不同的 react custom hooks 中,ReactjsPlayer 中进行组合
扩展方便:扩展时实现对应的 react custom hooks 并在 ReactjsPlayer 中根据条件进行加载
代码简洁:只做播放器内部的状态管理和控制栏显示与控制
理解容易: ReactjsPlayer 事件基于 vidoe 进行扩展,减小理解成本
接口统一:ReactjsPlayer 与 GrindPlayer 封装了统一的状态和方法,并通过 ReactPlayerContext 导出
使用相对复杂:
在交互式监视模式下启动测试运行器。 有关更多信息,请参见关于的部分。
npm run build
构建生产到应用程序build文件夹。 它在生产模式下正确捆绑了React,并优化了构建以获得最佳性能。
生成被最小化,并且文件名包括哈希值。 您的应用已准备好进行部署!
有关更多信息,请参见关于的部分。
npm run eject
注意:这是单向操作。 eject ,您将无法返回!
如果您对构建工具和配置选择不满意,则可以随时eject 。 此命令将从您的项目中删除单个生成依赖项。
相反,它将所有配置文件和传递依赖项(webpa
React是一个基于组件化的JavaScript库,它允许开发者以一种高效、可重用的方式构建用户界面。为了使用React,开发者需要在其项目中引入两个主要的库文件:react.development.js和react-dom.development.js。这两个文件提供了React的核心功能,包括虚拟DOM、事件处理、组件和状态管理等功能。
同时,为了将React的代码转换为浏览器可以识别的JavaScript代码,开发者还需要使用Babel这个JavaScript转换工具。在引入Babel之后,开发者需要添加一些插件来使其支持React的语法,比如JSX转换插件。
在React的官方网站上,这些库文件的源代码和它们的压缩版可以进行手动下载。此外,React也提供了一些其他的安装方式,如使用npm包管理器或通过CDN引入等。无论使用哪种方式安装,开发者都需要确保使用的React版本和其他库文件是兼容的,以避免可能出现的不兼容错误。
总之,React和其相关的库文件都是优秀的JavaScript工具,是构建高质量用户界面的不二选择。为此,开发者应当了解React和它们的使用、安装方式等方面的知识,以提升自身的开发效率和代码质量。