我在为我的进度条组件设置动画时遇到了一些问题......我正在尝试为我的组件设置动画(通过在屏幕上可见时用 Spring 填充进度条组件宽度从 0% 到 X%(通过使用 VisibilitySensor)。我到目前为止已经尝试了一些事情,但我还没有弄清楚如何正确地做到这一点。 PS:我目前是 React 的新手。
这是我到目前为止所尝试的:
尝试#1:-这种方法的问题:我收到一条错误消息“未定义插值”(可能是因为宽度:isVisible ? ${props.percent}% : '0%' in the Spring)也许有一种解决方法这个 ?
function SkillProgress(props) {
return (
<VisibilitySensor>
{({ isVisible }) => (
<Spring delay={300} to={{ opacity: isVisible ? 1 : 0, width: isVisible ? `${props.percent}%` : '0%'}}>
{animation =>
<div>
<div>{props.icon}{props.skillname}</div>
<div className={"progressbar"}>
<div className={"progressbarprg"} style={animation}><span
className={"skillLevel"}>{props.level}</span></div>
</div>
</div>
}
</Spring>
)}
</VisibilitySensor>
)
}
尝试#2:
这种方法的问题:初始动画有效,但是当组件从可见变为不可见时,弹簧动画不起作用,它直接从 0% 变为 X%。
function SkillProgress(props) {
const spring = useSpring({from: {width: '0%'}, width: ${props.percent}%, config: config.molasses, delay: 300});
const spring2 = useSpring({from: {width: ${props.percent}%}, width: '0%', config: config.molasses, delay: 300});
return (
<VisibilitySensor>
{({ isVisible }) => (
<div>
<div>{props.icon}{props.skillname}</div>
<div className={"progressbar"}>
<animated.div className={"progressbarprg"} style={isVisible ? spring : spring2}><span
className={"skillLevel"}>{props.level}</span></animated.div>
</div>
</div>
)}
</VisibilitySensor>
)
}
预先感谢您的帮助 !