В настоящее время я создал компонент карусели, я передаю ему свои данные, но я хотел бы добавить переход между переключениями данных.
Я слышал, что многие люди рекомендуют реагирующая весна так что я решил попробовать. В настоящее время я пытаюсь реализовать хук useTransition
, но он не работает должным образом.
Я просто хочу постепенно увеличивать / уменьшать только данные, когда пользователь нажимает "влево" Кнопки «/» вправо. В настоящее время он начинает исчезать из моего контента, но затем создает клон моей карусели и не исчезает ... Я не уверен, что делаю неправильно, или это правильный хук, который я должен использовать?
В конечном итоге я предпочел бы ошеломляющую анимацию, когда содержимое затухает с некоторой задержкой между каждым элементом. Например: заголовок, затем цена, затем описание и т. Д. c будут постепенно исчезать, но с задержкой 300 мс между каждым элементом.
Вот что у меня сейчас есть:
const mod = (n: any, m: any) => ((n % m) + m) % m;
const CarouselContainer: React.FC = () => {
const [index, setIndex] = useState(0);
const handlePrev = useCallback(() => {
setIndex(state => mod(state - 1, data.length));
}, [setIndex]);
const handleNext = useCallback(() => {
setIndex(state => mod(state + 1, data.length));
}, [setIndex]);
const transitions = useTransition([index], (item: number) => item, {
from: { opacity: 0 },
enter: { opacity: 1 },
leave: { opacity: 0 }
});
return (
<>
{transitions.map(({ item, props, key }) => (
<Carousel
prevClick={handlePrev}
icon={data[item].icon}
title={data[item].title}
price={data[item].price}
description={data[item].description}
href={data[item].href}
nextClick={handleNext}
style={props}
key={key}
/>
))}
</>
);
};
Там довольно много кода, поэтому я предоставляю CodeSandBox , вилки оценены! :)