带你读《2022技术人的百宝黑皮书》——短视频无尽流前端开发指南(2)

简介: 带你读《2022技术人的百宝黑皮书》——短视频无尽流前端开发指南(2)

带你读《2022技术人的百宝黑皮书》——短视频无尽流前端开发指南(1) https://developer.aliyun.com/article/1243503?groupCode=taobaotech



视频播放器状态按钮


常规来讲播放器需要展示出两种状态:暂停中、缓冲中,播放中有进度条在推进一般不需要做额外展示。状态按钮组件实现如下:


tips:将按钮状态内置在组件中,暴露修改状态的方法给父元素,可以避免在改变按钮状态时触发父元素的re-render。


// ...
const StatusButton = forwardRef<IStatusButtonRef>((_, ref) => {
 const [status, setStatus] = useState<EStatus>(EStatus.PLAY);
 useImperativeHandle(ref, () => ({
 setStatus,
 }));
 return (
 <div className={styles.statusButton}>
 {(() => {
 switch (status) {
 case EStatus.PAUSE:
 return <div>{/* 暂停Icon */}</div>;
 case EStatus.WAITING:
 return <div>{/* 缓冲Icon */}</div>;
 default:
 return null;
 }
 })()}
 </div>
);
});
export default memo(StatusButton);


// ...
const VideoPlayer: FC<IVideoPlayer> = (props) => {
 const { source } = props;
 const videoPlayerRef = useRef<HTMLVideoElement | null>(null);
 const statusButtonRef = useRef<IStatusButtonRef | null>(null);
 const onPlay = () => {
 statusButtonRef.current?.setStatus(EPlayerStatus.PLAY);
 };
 useEffect(() => {
 videoPlayerRef.current?.addEventListener('play', onPlay);
 // 暂停(pause)和缓冲(waiting)监听方法类似
 // ...
 return () => {
 videoPlayerRef.current?.removeEventListener('play', onPlay);
 };
 }, []);
 return (
 <div className={styles.videoPlayerContainer}>
 {/* 播放器 */}
 <video
 ref={videoPlayerRef}
 className={styles.item}
 src={source}
 playsInline
 autoPlay
 />
 {/* 播放器状态按钮 */}
 <StatusButton ref={statusButtonRef} />
 </div>
 );
};
export default memo(VideoPlayer);


视频播放器进度条


image.png



带你读《2022技术人的百宝黑皮书》——短视频无尽流前端开发指南(3) https://developer.aliyun.com/article/1243499?groupCode=taobaotech


相关文章
|
29天前
|
机器学习/深度学习 人工智能 前端开发
探索未来前端技术发展趋势
随着科技的不断进步,前端技术在不断演进。本文将探索未来前端技术的发展趋势,并讨论其对用户体验、开发效率和安全性的影响。
|
1天前
|
机器学习/深度学习 人工智能 前端开发
跨界融合:前端技术与人工智能的奇妙联盟
在技术的世界里,前端开发不再是孤岛。本文探讨了前端技术如何与人工智能领域结合,为用户体验与功能提升开辟了新的可能性。从机器学习到智能推荐系统,我们将看到这些技术如何在前端应用中发挥其 ultimate 的作用。
|
24天前
|
缓存 移动开发 前端开发
在PWA的开发中,HTML与CSS作为前端技术的基础,发挥着至关重要的作用
【6月更文挑战第14天】PWA(渐进式网页应用)借助HTML和CSS,提供接近原生应用的体验。HTML构建页面结构和内容,响应式设计适应各种设备,语义化标签提升可访问性,Manifest文件配置应用元数据,离线页面保证无网时体验。CSS则用于定制主题样式,创建动画效果,实现响应式布局,并管理字体和图标。两者协同工作,确保PWA在不同环境下的优秀性能和用户体验。随着前端技术进步,HTML与CSS在PWA中的应用将更加深入。
29 2
|
26天前
|
前端开发 JavaScript Java
【前端技术】 ES6 介绍及常用语法说明
【前端技术】 ES6 介绍及常用语法说明
19 4
|
1月前
|
边缘计算 前端开发 Android开发
未来趋势下的前端开发:跨平台技术的崛起
随着技术的不断演进,前端开发领域也在迅速变化。本文探讨了未来趋势下前端开发的发展方向,着重分析了跨平台技术在前端开发中的崛起,并探讨了其对开发者和行业的影响。
|
6天前
|
前端开发 JavaScript API
只会用插件可不行,这些前端动画技术同样值得收藏-JavaScript篇(下)
只会用插件可不行,这些前端动画技术同样值得收藏-JavaScript篇(下)
|
6天前
|
监控 JavaScript 前端开发
只会用插件可不行,这些前端动画技术同样值得收藏-JavaScript篇(上)
只会用插件可不行,这些前端动画技术同样值得收藏-JavaScript篇(上)
13 0
|
6天前
|
前端开发 JavaScript UED
只会用插件可不行,这些前端动画技术同样值得收藏-CSS篇
只会用插件可不行,这些前端动画技术同样值得收藏-CSS篇
10 0
|
11天前
|
JavaScript 前端开发
必知的技术知识:esm前端模块化
必知的技术知识:esm前端模块化
|
11天前
|
编解码 自然语言处理 算法
技术心得:前端学HTTP之字符集
技术心得:前端学HTTP之字符集

热门文章

最新文章