У меня есть проблема с анимацией моего компонента индикатора выполнения... Я пытаюсь анимировать свой компонент (путем заполнения ширины компонента индикатора выполнения от 0% до X% с помощью Spring, когда он виден на экране (с помощью VisibilitySensor). Я до сих пор пробовал несколько вещей, и я еще не понял, как это сделать правильно PS: в настоящее время я новичок в React.
Вот что я пробовал до сих пор:
Попытка № 1: -Проблема с этим подходом: я получаю сообщение об ошибке «Интерполяция не определена» (вероятно, из-за ширины: isVisible? ${props.percent}%: '0%' в 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>
)
}
Заранее спасибо за вашу помощь !