【发布时间】:2021-06-14 15:17:00
【问题描述】:
我有一个上传视频的组件,我正在尝试显示进度条。 这是我的核心代码。
const Upload = () => {
const [percent, setPercent] = useState(0);
console.log(percent); // This logs uploaded percentage every time progListener callback is called. From 0 to 100.
const dropAccepted = async () => {
const params = {...} // parameters to upload video like filename, file
await APIs.uploadVideo(params, progListener);
}
const progListener = (event) => {
var p = Math.round((event.loaded * 100) / event.total)
// console.log(p) logs uploaded percentage from 0 to 100
setPercent(p);
}
return (
<h6>{percent}</h6>
<Dropzone onDropAccepted={dropAccepted}/>
)
}
在 progListener 回调中,我使用 setPercent 函数更新了百分比,所以我认为 h6 应该打印上传的百分比。但它始终为 0。 我的代码有什么问题?我将不胜感激。
【问题讨论】:
-
使用 useRef 代替 useState
-
你可以试试:setPercent(() => Math.round((event.loaded * 100) / event.total));
-
@Syder,我尝试了您的解决方案,但没有成功。
-
@ThanveerShah,你能给我一个示例,如何使用 useRef 代替 useState?
-
我们能看到
console.log(p)和console.log(percent)的日志吗?
标签: reactjs react-hooks use-state