Я пытаюсь научиться использовать реактивную пружину. Допустим, у меня есть три элемента div для анимации.
<a.div style={trans1}>
<a.div style={trans2}>
<a.div style={trans3}>
а trans1 имеет следующую конфигурацию…
const [clicked, toggle] = useState(null)
const { x } = useSpring({
from: { x: 0 },
x: clicked ? 1 : 0,
config: { duration: 500 },
})
const trans1 = {
transform: x
.interpolate({
range: [0, 0.25, 0.35, 0.45, 0.55, 0.65, 0.75, 1],
output: [1, 0.97, 0.9, 1.1, 0.9, 1.1, 1.03, 1],
})
.interpolate((x) => `scale(${x})`),
}
Как лучше всего реализовать один и тот же тип анимации во втором и третьем элементах div без дублирования всего этого кода? Как сделать несколько экземпляров одной и той же пружины для использования на нескольких объектах Dom, не запуская их все одновременно? Я, конечно, не хочу дублировать полный набор кода для каждого элемента, верно?
Нужно ли мне создавать функцию, которая принимает параметр, который может переключать аргументы в конфиге на лету? ????????♂️ Приветствуется любая помощь.
Вот живой пример: https://codesandbox.io/s/optimistic-bassi-brnle а>
Как сделать так, чтобы левая и правая стороны анимировались по одной, не создавая дублирующийся код?