Я так расстроен и готов рвать на себе волосы, потому что React, похоже, не хочет быть последовательным, но я знаю, что мне как разработчику чего-то не хватает.
Я работаю над каруселью элементов сзади вперед. Перемещение вперед работает отлично, анимация во всем приятная и чистая. Однако цикл назад (который обычно повторяет те же шаги, что и цикл вперед) не хочет плавной анимации, несмотря ни на что. Вот код карусели:
import useTimeout from "@/lib/hooks/useTimeout"
import { ChevronDown, ChevronUp } from "lucide-react"
import { CSSProperties, MouseEvent, useEffect, useRef, useState } from "react"
export type CarouselItem = {
key: string | number | bigint
title: string
element: React.ReactNode
}
type ForwardCarouselProps = {
containerStyle?: CSSProperties
content: [CarouselItem, CarouselItem, CarouselItem, ...CarouselItem[]] // minimum 3 items CarouselItem array
maxDisplayItems?: number
}
export default function ForwardCarousel({ containerStyle, content, maxDisplayItems } : ForwardCarouselProps) {
const displayCount: number = Math.max(maxDisplayItems || content.length, 3)
const [currentItemIndex, setCurrentItemIndex] = useState(0)
const backwardTimer = useTimeout()
const forwardTimer = useTimeout()
function getPreviousItemIndex() {
return currentItemIndex === 0 ? content.length - 1 : currentItemIndex - 1
}
function getNextItemIndex() {
return currentItemIndex === content.length - 1 ? 0 : currentItemIndex + 1
}
function cycleBackward(event: MouseEvent) {
event.preventDefault()
backwardTimer.begin(50)
setCurrentItemIndex(getPreviousItemIndex())
}
function cycleForward(event: MouseEvent) {
event.preventDefault()
forwardTimer.begin(50)
setCurrentItemIndex(getNextItemIndex())
}
function oneWayCyclicalSlice(arr: ArraySign Up
Log In
)
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... rousel-wha
Реагировать на анимацию рендеринга очень непоследовательно для карусели задом наперед; что мне не хватает? ⇐ CSS
Разбираемся в CSS
1772240443
Anonymous
Я так расстроен и готов рвать на себе волосы, потому что React, похоже, не хочет быть последовательным, но я знаю, что мне как разработчику чего-то не хватает.
Я работаю над каруселью элементов сзади вперед. Перемещение вперед работает отлично, анимация во всем приятная и чистая. Однако цикл назад (который обычно повторяет те же шаги, что и цикл вперед) не хочет плавной анимации, несмотря ни на что. Вот код карусели:
import useTimeout from "@/lib/hooks/useTimeout"
import { ChevronDown, ChevronUp } from "lucide-react"
import { CSSProperties, MouseEvent, useEffect, useRef, useState } from "react"
export type CarouselItem = {
key: string | number | bigint
title: string
element: React.ReactNode
}
type ForwardCarouselProps = {
containerStyle?: CSSProperties
content: [CarouselItem, CarouselItem, CarouselItem, ...CarouselItem[]] // minimum 3 items CarouselItem array
maxDisplayItems?: number
}
export default function ForwardCarousel({ containerStyle, content, maxDisplayItems } : ForwardCarouselProps) {
const displayCount: number = Math.max(maxDisplayItems || content.length, 3)
const [currentItemIndex, setCurrentItemIndex] = useState(0)
const backwardTimer = useTimeout()
const forwardTimer = useTimeout()
function getPreviousItemIndex() {
return currentItemIndex === 0 ? content.length - 1 : currentItemIndex - 1
}
function getNextItemIndex() {
return currentItemIndex === content.length - 1 ? 0 : currentItemIndex + 1
}
function cycleBackward(event: MouseEvent) {
event.preventDefault()
backwardTimer.begin(50)
setCurrentItemIndex(getPreviousItemIndex())
}
function cycleForward(event: MouseEvent) {
event.preventDefault()
forwardTimer.begin(50)
setCurrentItemIndex(getNextItemIndex())
}
function oneWayCyclicalSlice(arr: Array[url={PAGE_SIGNUP} className=]Sign Up[/url]
[url={PAGE_LOGIN} className=]Log In[/url]
)
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79898197/react-rendering-animations-very-inconsistently-for-a-back-to-front-carousel-wha[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия