如何在页面加载时将 react-bootstrap 进度条从 0 设置为动画?
How do I animate react-bootstrap progress bar from 0 to N on page load?
我正在为进度条使用 react-bootstrap ui 库。我希望它在页面加载时将进度条从 0 动画化到 70。
如何实现?
这是代码
Component.js
<ProgressBar
animated
now={70}
className="progress-bar"
/>
Component.style
.progress-bar {
width: 400px;
}
预期输出: 它应该在页面加载时从 0 到 70 进行动画处理。
animate
属性 不会动画化进度条,但会动画化进度条上的 条纹 。
来自docs:
Animate's the stripes from right to left
你需要的是一个更新 now
属性 的定时器。大概是这样的:
const MyComp = () => {
const [progressNow, setProgressNow] = useState(0)
const updateProgressNowHandler = setInterval(() => {
if (progressNow >= 70 ){
setProgressNow(70)
clearInterval(updateProgressNowHandler)
}
setProgressNow(s => s+1)
}, 50)
return
<ProgressBar
animated
now={progressNow}
className="progress-bar"
/>
}
这绝不是生产就绪。
您需要确保在卸载组件时清除间隔。
如果组件有可能被重新渲染(这很可能会发生),您需要跟踪已经取得的进展并从最后一个值的计数器开始。
我正在为进度条使用 react-bootstrap ui 库。我希望它在页面加载时将进度条从 0 动画化到 70。
如何实现?
这是代码
Component.js
<ProgressBar
animated
now={70}
className="progress-bar"
/>
Component.style
.progress-bar {
width: 400px;
}
预期输出: 它应该在页面加载时从 0 到 70 进行动画处理。
animate
属性 不会动画化进度条,但会动画化进度条上的 条纹 。
来自docs:
Animate's the stripes from right to left
你需要的是一个更新 now
属性 的定时器。大概是这样的:
const MyComp = () => {
const [progressNow, setProgressNow] = useState(0)
const updateProgressNowHandler = setInterval(() => {
if (progressNow >= 70 ){
setProgressNow(70)
clearInterval(updateProgressNowHandler)
}
setProgressNow(s => s+1)
}, 50)
return
<ProgressBar
animated
now={progressNow}
className="progress-bar"
/>
}
这绝不是生产就绪。
您需要确保在卸载组件时清除间隔。
如果组件有可能被重新渲染(这很可能会发生),您需要跟踪已经取得的进展并从最后一个值的计数器开始。