Как создать CAROUSEL/СЛАЙДЕР на ReactJS с нуля

แชร์
ฝัง
  • เผยแพร่เมื่อ 23 ม.ค. 2025

ความคิดเห็น • 47

  • @РоманНарожнов
    @РоманНарожнов ปีที่แล้ว +2

    Огонь!!! Дикция, изложение сути, наглядность +100500 баллов)

  • @d_matern
    @d_matern ปีที่แล้ว

    Спасибо!

  • @АнжеликаЧегринец
    @АнжеликаЧегринец 9 หลายเดือนก่อน

    Спасибо за видео! Очень понятная подача и реализация!

  • @veronikamalyshkova928
    @veronikamalyshkova928 2 ปีที่แล้ว +3

    Спасибо! Очень помогло! 🙏

  • @denmccormik7654
    @denmccormik7654 2 ปีที่แล้ว +2

    Понимаю, что запросов много, но оставлю еще один: было бы интересно глянуть на разбор нужных для любого приложения анимаций на примере какой-нибудь популярной библиотеки.

  • @dogober3861
    @dogober3861 2 ปีที่แล้ว +1

    Не понял по поводу параметра currentOffset?, где он объявляется ?

  • @NeoCoding
    @NeoCoding ปีที่แล้ว

    спасибо за труд

  • @ПавелКуприянов-ь8ы
    @ПавелКуприянов-ь8ы ปีที่แล้ว

    Класс, спасибо! Смотрю уже ночью, не могу сообразить, а как зациклить слайдер

  • @GameForYouOnline
    @GameForYouOnline ปีที่แล้ว

    не могу понять, у меня только отрисовались данные, когда вместо {props} написал {props.children}...почему так?

  • @nataliaortega9595
    @nataliaortega9595 11 หลายเดือนก่อน

    как сделать const PAGE_WIDTH для кроссбраузерная верстки? чтобы размер менялся при изменении устройства. Сейчас получается фиксированный размер, но хочется сделать более пластичным.

  • @ArtemMindsurfer
    @ArtemMindsurfer ปีที่แล้ว

    а вот что делать чтобы плавно менялась картинка и чтобы можно было свайпать пальцем?

  • @tanyab3325
    @tanyab3325 9 หลายเดือนก่อน

    как установить компаненту карусель? С помощью какой команды?

  • @user-cs7ex6vx9u
    @user-cs7ex6vx9u 3 ปีที่แล้ว

    Спасибо 🥳

  • @thewat4er
    @thewat4er 2 ปีที่แล้ว

    Лучший

  • @SerhiiNesterov
    @SerhiiNesterov 2 ปีที่แล้ว

    Спасибо

  • @skyTechVektor
    @skyTechVektor 2 ปีที่แล้ว

    Ну что если надо что бы было видно 3 слайда . Я даю тогда offset = ширина одного слайда + margin right
    Не знаю правильно ли делаю. Вроже работает

  • @RailGainetdinov
    @RailGainetdinov 2 ปีที่แล้ว

    Можно название данной цветовой схемы для VS Code?

  • @МаксимВладимирович-я7ю
    @МаксимВладимирович-я7ю ปีที่แล้ว

    чет я не понял, откуда currentOffset берется?

    • @DevMagazineChannel
      @DevMagazineChannel  ปีที่แล้ว

      currentOffset - это просто локальная переменная, ее можно назвать как угодно.
      в этой конструкции мы меняем состояние
      setOffset((currentOffset) => { /* ... */ })
      это еще один вариант изменения состояния:
      * можно так: setOffset(100)
      * а можно так: setOffset((currentOffset) => currentOffset + 100) // если нужно вычислить новое значение на основе текущего значения состояния

    • @homo.errantium
      @homo.errantium 9 หลายเดือนก่อน

      @@DevMagazineChannel я может что-то упустил, но значение currentOffset откуда берётся в видео? Понятно, что это локальная переменная, но она на момент срабатывания функии не определена, т.е. NaN

  • @AirdropLuck
    @AirdropLuck 3 ปีที่แล้ว

    Скажите, вы проводите платные консультации\ тестовые собеседования для junior js
    eact разработчиков?

    • @oygemor
      @oygemor 3 ปีที่แล้ว

      Зачем тебе платные собеседования. Сходи на реальные - от тебя ничего не убудет, а опыта только прибудет :)

    • @DevMagazineChannel
      @DevMagazineChannel  3 ปีที่แล้ว +1

      Пока не думал об этом... Но идея хорошая

    • @ant3413
      @ant3413 3 ปีที่แล้ว

      не советую платные курсы,все есть бесплатно в интернете,а все эти курсы лохотрон имхо

  • @kapitolyp
    @kapitolyp 3 ปีที่แล้ว +2

    Хорошо, но это элементарно, не хватает самого сложного, реализации, чтобы после третьего слайда шел снова первый, и не через сдвиг обратно влево, показывая второй слайд, а "бесконечный слайдер". Очень бы хотелось вторую часть.

    • @DevMagazineChannel
      @DevMagazineChannel  3 ปีที่แล้ว +1

      Спасибо! полезная фича, про "бесконечный слайдер" тоже планирую записать

    • @googlechei
      @googlechei 3 ปีที่แล้ว +1

      Согласен. Везде есть варианты реализации классического слайдера, но чтобы сделать его бесшовно бесконечным уроков ноль, к сожалению. Так же еще круто было бы узнать про события тача (свайпа) для переключения, для мобильных версий супер актуально. Спасибо!

    • @DevMagazineChannel
      @DevMagazineChannel  3 ปีที่แล้ว

      Думаю, что на целый плейлист наберется) Буду постепенно внедрять фичи и записывать

    • @hackerpetrovi436
      @hackerpetrovi436 2 ปีที่แล้ว

      а в чем сложность то?

    • @daniil__kryuchkov
      @daniil__kryuchkov 2 ปีที่แล้ว

      1. в левую кнопку добавь if (newOffset > 0) newOffset = -1350
      2. в правую кнопку добавь if (newOffset < -1350) newOffset = 0
      3. const newOffset смени на let newOffset
      готово

  • @alexanderrevan4478
    @alexanderrevan4478 2 ปีที่แล้ว

    Как такой слайдер сделать адаптивным?

    • @andrewlevitsky6270
      @andrewlevitsky6270 2 ปีที่แล้ว

      В медиастилях меняй ширину экрана вывода слайдера, вот и все

  • @ЕвгенийЖ-н6м
    @ЕвгенийЖ-н6м 2 ปีที่แล้ว +1

    Лучше делать на относительных единицах измерения

  • @ViKiNG_89
    @ViKiNG_89 2 ปีที่แล้ว +1

    Как можно типизировать этот участок с помощью TS ?
    буду благодарен за подсказку ))
    useEffect(() => {
    setPages(
    Children.map(children, child => {
    return cloneElement(child, {
    style: {
    height: '100%',
    minWidth: `${PAGE_WIDTH}px`,
    maxWidth: `${PAGE_WIDTH}px`,
    },
    });
    })
    );
    }, []);

    • @saveliy4417
      @saveliy4417 2 ปีที่แล้ว +1

      тут не надо типизировать, может кому понадобиться код с типизацией
      import s from './Slider.module.scss'
      import {
      Children,
      cloneElement,
      ReactElement,
      useEffect,
      useState
      } from 'react'
      import { FaChevronLeft, FaChevronRight } from 'react-icons/fa'
      interface CarouselProps {
      children: ReactElement[]
      }
      export const Carousel = ({ children }: CarouselProps) => {
      const [pages, setPages] = useState([])
      const [offset, setOffset] = useState(0)
      const PAGE_WIDTH = 720
      const handleLeftArrowClick = () => {
      setOffset(current => {
      const newOffset = current + PAGE_WIDTH
      return Math.min(newOffset, 0)
      })
      }
      const handleRightArrowClick = () => {
      setOffset(current => {
      const newOffset = current - PAGE_WIDTH
      const maxOffset = -(PAGE_WIDTH * (pages?.length - 1))
      return Math.max(newOffset, maxOffset)
      })
      }
      useEffect(() => {
      setPages(
      Children.map(children, child => {
      return cloneElement(child, {
      style: {
      height: '100%',
      minWidth: `${PAGE_WIDTH}px`,
      maxWidth: `${PAGE_WIDTH}px`
      }
      })
      })
      )
      }, [])
      return (






      {pages}






      )
      }

  • @eroskaeroska6921
    @eroskaeroska6921 3 ปีที่แล้ว +1

    Это - слайдер, спасибо за код, но это не carousel.

    • @DevMagazineChannel
      @DevMagazineChannel  3 ปีที่แล้ว

      потому что carousel должен быть зацикленным?

  • @Alon794
    @Alon794 2 ปีที่แล้ว +2

    автор не шарит походу - так слайдеры не делаются.

    • @kerto9364
      @kerto9364 ปีที่แล้ว +1

      а как делаются?