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