URL.createObjectUrl
wouldn’t work when I re-upload another file after uploading at the first time. videoFile
is updated but it doesn’t generate object url…
JavaScript
x
17
17
1
const [videoFile, setVideoFile] = useState<File>()
2
3
const uploadVideo = (selectorFiles: FileList | null) => {
4
if(selectorFiles) {
5
setVideoFile(selectorFiles[0])
6
}
7
}
8
9
return (
10
<>
11
<video controls>
12
<source src={URL.createObjectURL(videoFile)} />
13
</video>
14
<input type="file" onChange={(e) => uploadVideo(e.target.files)} />
15
</>
16
)
17
Advertisement
Answer
It works. Just render the video element when file exists.
Refer to the working example on Codesandbox.
JavaScript
1
22
22
1
import { useState } from "react";
2
3
export default function App() {
4
const [videoFile, setVideoFile] = useState();
5
6
const uploadVideo = (selectorFiles) => {
7
if (selectorFiles) {
8
setVideoFile(selectorFiles[0]);
9
}
10
};
11
12
return (
13
<>
14
{videoFile && (
15
<video controls>
16
<source src={URL.createObjectURL(videoFile)} />
17
</video>
18
)}
19
<input type="file" onChange={(e) => uploadVideo(e.target.files)} />
20
</>
21
);
22
}