Не отрабатывает условие при событии DragEnd
Пишу на JS меньше года. Пытаюсь написать условие для драга карточки, чтобы учитывалось условие при котором определяется 1-ый и последний элемент в массиве и функция не отрабатывала. Но почему-то условие игнорируется, при том что в консоль никаких ошибок не выводится.
Функция:
const onDragEnd = (e) => {
if (isActive)
if (e.clientX >= window.innerWidth / 2)
if (!cardsArray[0])
setActive(active - 1)
else return null
else if (e.clientX <= window.innerWidth / 2)
if (!cardsArray.length - 1)
setActive(active + 1)
else return null
if (isPrev)
setActive(active - 1)
else if (isNext)
setActive(active + 1)
}
Сам компонент с карточками:
const cardsList = (
<motion.div
className={s.cardsList}
style={{ transform: `translateX(${active * -50}%)` }}
>
{
cardsArray.map(({ name, img, link, isDesktop }, i) => {
const isActive = i === active
const isPrev = i < active
const isNext = i > active
const handleClick = () => {
if (isActive)
history.push(link)
if (isPrev)
setActive(active - 1)
else if (isNext)
setActive(active + 1)
}
const onDragEnd = (e) => {
if (isActive)
if (e.clientX >= window.innerWidth / 2)
if (!cardsArray[0])
setActive(active - 1)
else return null
else if (e.clientX <= window.innerWidth / 2)
if (!cardsArray.length - 1)
setActive(active + 1)
else return null
if (isPrev)
setActive(active - 1)
else if (isNext)
setActive(active + 1)
}
return (
<Card
key={i}
name={name}
img={img}
link={link}
{...{
i,
isActive,
isNext,
isPrev,
handleClick,
isDesktop,
onDragEnd
}}
/>
)
})
}
</motion.div>
)
Заранее благодарю за помощь!
Ответы (1 шт):
Автор решения: George Marco
→ Ссылка
Окей, спасибо всем за просмотр и лайки моей проблемы :) Но я сам смог найти решение:
Мне нужно было дополнить условие точным указанием итератора в массиве
i != cardsArray[0]
и аналогично во втором случае
i != cardsArray.length - 1
Вот и все)
Надеюсь, помогу кому-то еще своим решением
Удачи!