Используя useSprings
Я могу получить независимые строки для каждого элемента, которые я могу отложить индивидуально
Это делается "из коробки", когда to:
имеет только одно правило, но если вы хотите объединить больше правил, тогда как-то каждый элемент не зависит от других
Используя useSprings
, вы можете получить эту индивидуальность
const text = [...'hey there how are you']
const from = { transform: 'translate3d(0,0px,0)' }
const to = inView ? [{ transform: 'translate3d(0,-40px,0)' }, { transform: 'translate3d(0,40px,0)' }] : from
const base = {
config: { mass: 5, tension: 2000, friction: 200 },
from: from,
to: to,
}
const springs = useSprings(text.length, text.map((t, i) => ({ ...base, delay: 100 * i })))
return (
<Div ref={handleRef}>
{springs.map((s, i) => {
return (
<animated.span key={`char${i}`} style={s}>
{text[i] === ' ' ? <> </> : text[i]}
</animated.span>
)
})}
</Div>
)
CodePen https://codesandbox.io/s/epic-buck-4ubud