Css 过渡不适用于 React 中的第一个 运行
Css transition does not work for the first run in React
我做了一个进度条组件:
import React, {useState, useEffect} from "react";
var ProgressBar = ({percentage, duration}) => {
let [style, setStyle] = useState({
"position":"relative"
})
useEffect(()=>{
setStyle({
"top":"0px",
"position":"relative",
"height":"100%",
"backgroundColor": "lightblue",
"color": "lightgrey",
"left": "0px",
"transition": `width ${duration}s`,
"width": percentage+"%"
});
}, [])
var cntStyle = {
"display": "block",
"width": "150px",
"left":"0px",
"backgroundColor":"grey",
"height":"15px",
"position": "relative"
}
return (
<div className="progressbar-container"
style={cntStyle}>
<div className="progress" style={style}></div>
</div>
);
}
export default ProgressBar;
并像
一样使用它
<ProgressBar
percentage="80"
duration="5" />
我想知道为什么转换不起作用。直接显示80%进度条
这不起作用,因为没有要从中过渡的宽度的初始值。
"CSS 转换允许您在给定的持续时间内平滑地更改 属性 值。" 阅读更多 here
如果您将百分比从一个值 (0) 更改为另一个值 (80),此转换应该有效。
解决此问题的方法是使用间隔更新组件道具或使用进度条宽度的值 0 初始化组件样式
我做了一个进度条组件:
import React, {useState, useEffect} from "react";
var ProgressBar = ({percentage, duration}) => {
let [style, setStyle] = useState({
"position":"relative"
})
useEffect(()=>{
setStyle({
"top":"0px",
"position":"relative",
"height":"100%",
"backgroundColor": "lightblue",
"color": "lightgrey",
"left": "0px",
"transition": `width ${duration}s`,
"width": percentage+"%"
});
}, [])
var cntStyle = {
"display": "block",
"width": "150px",
"left":"0px",
"backgroundColor":"grey",
"height":"15px",
"position": "relative"
}
return (
<div className="progressbar-container"
style={cntStyle}>
<div className="progress" style={style}></div>
</div>
);
}
export default ProgressBar;
并像
一样使用它<ProgressBar
percentage="80"
duration="5" />
我想知道为什么转换不起作用。直接显示80%进度条
这不起作用,因为没有要从中过渡的宽度的初始值。
"CSS 转换允许您在给定的持续时间内平滑地更改 属性 值。" 阅读更多 here
如果您将百分比从一个值 (0) 更改为另一个值 (80),此转换应该有效。
解决此问题的方法是使用间隔更新组件道具或使用进度条宽度的值 0 初始化组件样式