从 Firebase 存储中获取视频时使用 React 的空白页面

Blank Page with React when fetching video from Firebase Storage

从 firebase 存储中获取背景视频后,我试图在我的网络应用程序上显示它。代码看起来像这样:

import React, { useState, useEffect } from "react";
import { storage } from "../firebase";
const videoRef = storage.ref().child('<filename>');

export default function Dashboard() {
    const [videoURL, setVideoUrl] = useState('');

    useEffect(() => {
        videoRef.getDownloadURL().then((url) => {
            setVideoUrl(url);
        });
    }, []);
    return (
        <div>
            <video width="400" autoPlay muted loop>
                <source src={videoURL} type="video/mp4"/>
                Your Browser does not support HTML video.
            </video>
        </div>
    );
}

生成的页面是空白的,但通过开发工具检查该元素会显示具有正确 url 的视频元素。事实上,如果我只是复制 url 并将其硬编码为 src,它就可以正常工作。 我假设有一些与 React 相关的问题在更新 url 后没有刷新,但到目前为止我还没有找到解决方案。

尝试在 useEffect 的依赖数组中添加 videoRef。

你应该尝试使用一个组件来做到这一点。

我发现react-player非常好用。

https://www.npmjs.com/package/react-player

用法示例:

import React from 'react'
import ReactPlayer from 'react-player'

// Render a YouTube video player
<ReactPlayer url='https://www.youtube.com/watch?v=ysz5S6PUM-U' />

当视频 URL 可用时,您需要呈现 <video> 标记。

return (
    <div>
        {!!videoURL && (
            <video width="400" autoPlay muted loop>
                <source src={videoURL} type="video/mp4"/>
                Your Browser does not support HTML video.
            </video>
        )}
    </div>
);