93 - paginator, постраничный вывод - Практика ReactJS

Поделиться
HTML-код
  • Опубликовано: 10 сен 2019
  • it-incubator.io/education/?ut... - человекоориентированное, честное и профессиональное обучение front-end и back-end разработке гарантированно до трудоустройства за фиксированную стоимость.
    Поддержать меня можно на patreon / itkamasutra или оформив спонсорство на данном канале.
    Помогайте друг другу вот здесь: t.me/reactjs_samurai
    API: social-network.samuraijs.com/
    Друзья, постраничный вывод и алгоритмика и математика, которые в него заложены - очень важны для вашего мышления. Постарайтесь это понять. Просчитать логику в голове, на БУМАГЕ. Paginator, paging, постраничный вывод - это касается не только визуализации на UI, но это вам пригодится в будущем, так как эти расчёты постраничной разбивки будут с вами всю жизнь: от rest api до распределённой обработки данных с помощью hadoop.
    Тема акутальная. Вспоминаем, как мы делали первую версию постарничного вывода и запрос данных на сервер, вот видео:
    • 55 - React JS практика...
    Летим, самураи!!!
    Уроки по React JS: • Курс "React JS - путь ...
    * Сайты:
    it-kamasutra.com
    it-incubator.eu
    samuraijs.com
    * Мы в соц. сетях:
    itkamasutra
    / itkamasutra
    telegram.me/itkamasutra
    * Мои личные VK и Insta:
    d.kuzyuberdin
    / it.kamasutra.dimych
    #tdd #reactJS #тестирование #практика #пример #уроки #курс

Комментарии • 409

  • @advhunter2
    @advhunter2 4 года назад +169

    Прошлый формат

  • @user-je4zx5vf3p
    @user-je4zx5vf3p 4 года назад +193

    Мне такой формат видео не очень зашол. Спасибо за урок

  • @MDFireX5
    @MDFireX5 4 года назад +86

    Вся твоя фишка это объяснения и пошаговые этапы, важна не скорость а качество

  • @user-rd4ck6ei2f
    @user-rd4ck6ei2f 4 года назад +115

    Не....мы теряем Димыча...вообще не заходит такой формат..Все равно ты теряешь время когда готовишься и потом снимаешь...лучше как раньше....поэтапно отслеживать изменения кода и смотреть что за собой тянет то или другое изменение гораздо лучше..я давно сделал уже пейджинатор в другом правда ключе запросами на сервак за актуальной информацией но эта тема очень интересна ...так планирую разбивать туДу задачки на страницы..зашло не ок..несколько раз пересматривать пришлось что бы проследить ход процесса..Дима вернись мы все простим :)))))))))))))

  • @user-nk6ih7uh1h
    @user-nk6ih7uh1h 3 года назад +13

    Если кто-то не понял, что происходит в className span'a, в котором содержаться номера страниц, то подскажу: Дима установил библиотеку classnames для того, чтобы удобнее было добавлять сразу несколько классов одному элементу. Мне почему-то казалось, что этот paginator будет очень легко сходу реализовать, особенно после одного лишь взгляда на твою идею в коде, но что-то пошло не так, поэтому все затянулось. В конце концов все реализовано и понятно. Пагинация, pagination, постраничный вывод (называйте, как хотите) - важная тема, так как она будет дальше использоваться на разных страницах. Лучший курс по React JS и JavaScript. Дима, красавчик, летим

  • @wirexia3454
    @wirexia3454 3 года назад +39

    Можно добавить ещё:
    useEffect(()=>setPortionNumber(Math.ceil(currentPage/portionSize)), [currentPage]);
    при уходе со страницы юзеров на другую и при повторном возвращении на неё, пагинация подгоняется под текущую страницу юзеров, которая записана в userReducer, но лучше самим увидеть разницу.
    P.S.: Спасибо Димыч, раньше скролл добавлял что бы скрыть эту громадину страниц, но такой подход в разы эффектней, теперь тема пагинации меня вовсе не пугает)

    • @__online7250
      @__online7250 3 года назад +3

      Благодарю, мне пригодился твой код)

    • @vlad-zf1ev
      @vlad-zf1ev 2 года назад

      нужный код, благодарю!

    • @scarletheavens4606
      @scarletheavens4606 2 года назад

      Плюсик в карму!

    • @alik64
      @alik64 2 года назад

      Как раз об этом подумал, благодарю 👍🏼

    • @TMANandMAISON991
      @TMANandMAISON991 Год назад +2

      или можно внедрить этот код вот так
      const [portionNumber, setPortionNumber] = useState(Math.ceil(props.currentPage/portionSize))

  • @arcticmonkey077
    @arcticmonkey077 4 года назад +84

    За старый формат!

  • @MadaraUchiha-vh9yh
    @MadaraUchiha-vh9yh Год назад +6

    вот как реашил.
    totalUsersCount не нужно менять на totalItemsCount потому что, иначе нужно будет лезть в редюсер, на сколько я понял.
    в терминале пишем это: npm i classnames --force.
    сверху пишем: import cn from 'classnames'.
    а дальше пишем точно такой же код.

    • @iipofuck2110
      @iipofuck2110 Год назад +1

      cпасибо, что пришлось тратить меньше времени на поиск проблемы)

  • @RBBoxing
    @RBBoxing 4 года назад +39

    мне лично совсем не удобно было из за того, что весь код компонента который уже написан не помещается на экране по ширине, нормально ничего не отследить не сверить не получалось. И вот про этот момент ничего не сказал import cn from "classnames";
    А так большое спасибо конечно за труд!

    • @webdeveloper7690
      @webdeveloper7690 3 года назад +3

      Про cn, >>> npm i classnames --save-dev

    • @user-nw6kz6zn3s
      @user-nw6kz6zn3s 3 года назад +2

      не обязательно использовать библиотеку для этого, у меня так работает className={`${currentPage === p ? styles.selectedPage : styles.noSelectedPage }`}

    • @MonkyKseniya
      @MonkyKseniya 3 года назад

      @@webdeveloper7690 только без "-dev", если загрузить в дев, то не будет компилироваться. Я так сделала и пришлось удалять пакет, грузить нормально. У того же Димаса в проекте установлено без дев, это можно посмотреть в package.json .

    • @iliagrashev681
      @iliagrashev681 3 года назад

      @@webdeveloper7690 спасибо огромнейшее!!!)

    • @ruslanfomin4648
      @ruslanfomin4648 2 года назад

      у меня одного пагинатор не отобразился вообще?? уже экспериментировал с css, думая, что он где-то спрятался за фоном, но нет, не показывает. Самое интересное, отступ появился, как будто он там, но невидим.. сижу над этой багой, ломаю голову
      Уже даже скопипастил код Димыча(пагинатор и его css), не показывает, хоть ты тресни

  • @__online7250
    @__online7250 3 года назад +7

    Прежний формат уроков понятнее, пусть даже и дольше) Спасибо за урок! #tdd #reactJS #тестирование #практика #пример #уроки #курс

  • @bitcoin-
    @bitcoin- 4 года назад +422

    Этот формат видео не очень!Когда за тобой повторяешь картинка складывается на ура.Пожалуйста не надо этот формат .В старом формате весь изюм и полезность проекта соц сеть.Спасибо Димыч

    • @artempavlenko5147
      @artempavlenko5147 3 года назад

      +++

    • @rupert-xxx
      @rupert-xxx 3 года назад +5

      Согласен с посылом твоего комента, но изюм говно конечно

    • @user-te9ci1tx4x
      @user-te9ci1tx4x Год назад +1

      согласен на 100%

    • @J-Lany
      @J-Lany 6 месяцев назад

      Согласна на 100000%

  • @user-bd4lw9hx3s
    @user-bd4lw9hx3s 3 года назад +1

    Дмитрий, спасибо вам огромное! Вы удивительный человек! Столько силы и ума! Отличные уроки по React - Redux! Благодаря вашим предыдущим урокам получилось самому сделать Paginator, поставив в начале видео на паузу!

  • @johnmj750
    @johnmj750 2 года назад +5

    Спасибо, Димыч!
    Сейчас, в 2022 наверное это не актуально, но предыдущий формат в 100500 раз лучше))
    В любом случае, спасибо тебе за труды!!!
    Храни тебя Бог!!!

  • @mariia6820
    @mariia6820 4 года назад +2

    Лучшие уроки по практике ReactJS!

  • @maxkos6184
    @maxkos6184 3 года назад +13

    Мое мнение спустя год - Димыч, лучше показывать нативно, в режиме реального времени, ибо так лучше. Например, в Пагинаторе есть строка import cn from 'classnames'; и я то конечно, догадался сделать npm i --save classnames , но вот надо бы озвучивать, а если бы по ходу все было, то мы бы поняли кто такой classnames и зачем его инсталить в проект. Но, ты крут Димыч! Тесты херачишь, настоящий самурай

    • @peschernuy
      @peschernuy 2 года назад +1

      Так все таки кто он такой и зачем?))

    • @Aleks-lk1et
      @Aleks-lk1et Год назад

      Спасибо с 2022!

  • @shhhamsy2304
    @shhhamsy2304 Год назад +2

    Если вы не поняли что такое cn в то Димыч установил библиотеку classname (установить npm i classnames || yarn add classnames)
    и стоит прочитать немного документацию этой либы

  • @MariTochka
    @MariTochka 3 года назад +6

    прошёл ровно месяц с того, как я начала первое видео этого курса. помню, какой была воодушевленной, курс офигенский и показал прям, что делать!.. но сейчас я чувствую усталость... и вот после этого видео, мне показалось, что это твоя усталость отражается на мне). надеюсь, что мой энтузиазм вновь вернётся, потому что без него идти вперед куда сложнее.

  • @ritaravinsky8262
    @ritaravinsky8262 2 года назад

    Спасибо!
    Конечно хочется видеть как ты кодишь и решаешь проблемы в процессе!
    React, pagination, testing components.

  • @user-di9dd7bb4l
    @user-di9dd7bb4l 4 года назад +1

    Спасибо за урок!
    paginator,постраничный вывод - React JS

  • @user-zq6nr9zy2u
    @user-zq6nr9zy2u 3 года назад

    спасибо за всю работы проделанную и которую сделаешь

  • @marsonleonardovich4036
    @marsonleonardovich4036 4 года назад +1

    Более сложные темы лучше по старому формату, а простые, которые легко заходят, можно по новому формату. LIKE! Этот урок хорош, тем, что разбираешь не свой код сам!

  • @sveta7201
    @sveta7201 5 месяцев назад

    🤩paginator, постраничный вывод - Практика ReactJS. Лучше как было! Спасибо за уроки!

  • @semial
    @semial 3 года назад

    Лучше, когда ты все показываешь, но и в таком формате есть свои плюсы. Считаю, что тут больше голову надо включать и самому допирать. Молодец, так держать, экспериментируй дальше! У тебя хорошо получается! Спасибо за урок!

  • @mykhailostepanishchev6472
    @mykhailostepanishchev6472 4 года назад

    Крутой урок ! Большое спасибо !

  • @user-di9dd7bb4l
    @user-di9dd7bb4l 4 года назад

    Спасибо за урок!!!!
    paginator постраничный вывод.
    Практика React JS

  • @user-xs2dx2mh3f
    @user-xs2dx2mh3f 3 года назад

    Блин, Димыч, как у тебя сил и энергии хватает такие уроки делать. Ты мега Чел. 93 выпуска прошли как на одном дыхании. Ты мастер доходчивого объяснения. Лайк всем урокам твоим

  • @rahalmamut01
    @rahalmamut01 4 года назад

    Спасибо за практику по реакту!

  • @user-xs2dx2mh3f
    @user-xs2dx2mh3f 3 года назад

    Спасибо за УРОК, очень круто!!!!!!!!!!!!!!!

  • @amaxe12345
    @amaxe12345 4 года назад +2

    Спасибо Димыч! paginator, постраничный вывод - Практика ReactJS #tdd #reactJS #тестирование

  • @user-tf6jz7hj9d
    @user-tf6jz7hj9d 3 года назад +2

    Спасибо за react paginator. Всё было понятно, в принципе, но да, старый формат гораздо более поучительный, когда можно следить за ходом твоих мыслей, рассуждениями, как ты приходишь к решениям, с какими проблемами сталкиваешься и как их решаешь. Спасибо за курс! Уже близко к концу... :)

  • @user-oh3jc7jq3u
    @user-oh3jc7jq3u Год назад

    Полезный выпуск. Спасибо!

  • @frozeninside5004
    @frozeninside5004 3 года назад +4

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

  • @dimitriitkach7697
    @dimitriitkach7697 3 года назад

    spasibo za urok - 93 - paginator, постраничный вывод - Практика ReactJS ,
    Both formats are good !

  • @eugene-dmitrievich
    @eugene-dmitrievich 5 месяцев назад

    Спасибо за урок! Было очень полезно. react, redux, pagination

  • @ctumyji9737
    @ctumyji9737 4 года назад +2

    Спасибо за урок! Старый формат понравился больше :)
    React JS от Димыча - лучший курс!

  • @vladimirww5152
    @vladimirww5152 3 года назад

    Круто, очень удобно работает!)

  • @twowords1681
    @twowords1681 4 года назад +23

    @
    Прошёл все 92 урока с осознанием каждой мелочи в React.
    @
    Сломался на сраном пагианторе
    PS. сложна

    • @vana__f7570
      @vana__f7570 3 года назад +1

      а математичка говорила учи алгебру и геометрию!!! Математичка ликует)))

    • @Max-cu6mc
      @Max-cu6mc 3 года назад

      то чувство когда сделал пагинатор круче еще на 55 выпуске + еще с роутом в URI с параметром за 30 мин, можно в мидлы наверное

    • @vadimkurikin5269
      @vadimkurikin5269 3 года назад

      @@Max-cu6mc скинь посмотреть. Интересно будет сравнить)
      Я тоже сделал его сразу, не такой как у Димыча, мой отображает последнюю страницу и +-5 страниц от выбранной.
      let pages = (currentPage, totalPages) => {
      let curArr = [];
      if (currentPage = totalPages) {
      curArr = [1, "...", totalPages - 4, totalPages - 3, totalPages - 2, totalPages - 1, totalPages]
      } else {
      for (let i = currentPage - 2; i

      {usersPage.currentPage == n ? {getUsers(n)}}>{n}
      : n == "..." ? {n} : {getUsers(n); setCurPage(n)}}>{n}
      }

      )}

  • @user-yx7in9nl1d
    @user-yx7in9nl1d 3 года назад

    Это хорошо, что про библиотечку classnames не рассказал, самому разобраться было и интересно, и полезно)))

  • @user-xd6ev4gz2k
    @user-xd6ev4gz2k 4 года назад +3

    формат круто подойдет для старых тем (по сути это старая тема, мы лишь только ее зарефакторили, мне зашло на ура), но если тема новая, то НЕТ, нужно расжевать все))

  • @ivanmiarkulau8320
    @ivanmiarkulau8320 3 года назад

    react, redux, paginator, спасибо за урок!)

  • @sergeymalinichev2329
    @sergeymalinichev2329 4 года назад

    Отличный курс!!!

  • @advhunter2
    @advhunter2 4 года назад +1

    Подобный формат

  • @marina.health
    @marina.health 2 года назад

    Димыч, спасибо) Мне понравился данный формат видео, наглядно)

  • @elenaswiderskaya718
    @elenaswiderskaya718 Год назад

    Доооолго не могла засесть за проблему переключения по страницам (описана в комментах), но тем не менее - решено! Димыч, спасибо! Полезно реализовать пагинатор (paginator) своими руками, без всяких UI библиотек. Прям чувствую, как мозг включается, а после решения проблемы прям пошел дофаминчик.

  • @is_eliseeva
    @is_eliseeva Год назад

    paginator
    спасибо за урок, Дмитрий!

  • @Snegurjan
    @Snegurjan 3 года назад +1

    Спасибо за урок,я так же за старый формат)))

  • @user-os6lc1ty1h
    @user-os6lc1ty1h 2 года назад

    Мне зашло, досмотрел, потом все сделал сам, от чего получил большое удовольствие, думаю неплохо было бы разбавлять таким форматом

  • @milter2539
    @milter2539 4 года назад +3

    Урок 93. Пишу свой белорусский социально-экологический проект. Комент как благодарность (:

  • @user-nk2qz5fb1p
    @user-nk2qz5fb1p 3 года назад

    новый формат кайф!

  • @genapolyakov
    @genapolyakov Год назад

    правильнее будет написать
    let [portionNumber, setPortionNumber] = useState(Math.ceil(currentPage / portionSize));
    после загрузки страницы или пользователей слетает potionNumber и становится =1. поэтому нужно заменить 1 на
    Math.ceil(currentPage / portionSize)

  • @Titanidze17
    @Titanidze17 4 года назад

    Спасибо за урок. С костылями лучше. Разжёвано не обязательно, а подводные камни очень важны

  • @TedBaggins
    @TedBaggins 3 года назад +5

    Советую тут не мудрить и просто использовать material-ui pagination. Предварительно надо установить их core и lab. Пример компоненты:
    { props.onPageChange(page); }}/>

    • @sanpop103
      @sanpop103 3 года назад

      Может знаешь ,как там цвет менять кроме 3 которые дефолтные ?

    • @daryaemelyanova1785
      @daryaemelyanova1785 Год назад +1

      @@sanpop103 , обернуть . А пример theme:
      const theme = createTheme({
      palette: {
      primary: {
      main: deepPurple[900],
      light: deepPurple[400],
      contrastText: '#fff',
      }
      },
      });

    • @daryaemelyanova1785
      @daryaemelyanova1785 Год назад

      У

  • @Aleks-lk1et
    @Aleks-lk1et Год назад

    Спасибо! 2022! Урок нормальный, код виден, рассказ понятен. Есть минус - автор может упустить чего-нибудь, а у нас не будет компилиться. Так и случилось. Пришлось почитать комментарии и сделать npm i classnames. Иду далльше.

  • @user-fs1ux7dy6r
    @user-fs1ux7dy6r 4 года назад

    paginator, постраничный вывод - лучший курс по React

  • @alfa_main
    @alfa_main 3 года назад

    Очень сложно для понимания, так большинство ютуберов делают контент для уже бывалых ребят, а мне теперь нужно будет как то понять самому что тут к чему) ну всеравно спасибо за видео)

  • @orangedragonthebestraper
    @orangedragonthebestraper 2 года назад

    Этот формат Явно лучше , для простых и средних тем - точно ! для сложных этого будет не достаточно!👌😎😎😎

  • @user-pk3tl6nu4l
    @user-pk3tl6nu4l 2 года назад +1

    Мы конкурентные друзья :D Конкурируем но по дружески :)

  • @user-cy4cz7zx4m
    @user-cy4cz7zx4m Год назад +1

    Спасибо за урок

  • @user-rg8wz2rt9e
    @user-rg8wz2rt9e 4 года назад +14

    Хорошо объяснили, норм формат, но иногда лучше с Димычем код писать. Но нужно сделать npm install classnames

  • @ole_oli
    @ole_oli 3 года назад

    Спасибо Димычь. Бомбим дальше. paginator готов.

  • @user-tr8hr4xm1l
    @user-tr8hr4xm1l 4 года назад +1

    Кстати да, Димыч!))) Это философский вопрос 2:10 . Думаю, что пока цели совпадают, то друзья, а когда дело доходит до дележки денег и борьбы за заказчика, то конкуренты

  • @esken97
    @esken97 4 года назад +1

    Спасибо Димыч)

  • @onGrill
    @onGrill 3 года назад

    Трудновато, но разобрался. Димыч, спасибо!

  • @tootlno3774
    @tootlno3774 2 года назад

    Очень круто Димыч! Я сначала по своему сделал, потом уже посмотрел видос, до твоего варианта я бы наверное никогда бы не додумался лол, хотя кода получилось столько же)))

  • @razlond159
    @razlond159 3 года назад +1

    Поскольку с видео, честно говоря, почерпнуть что-то сложно, предлагаю тем кто был в неком замешательстве после просмотра как и я, взглянуть на react-paginate. Очень понятная пагинация, легкая + сделаете сами и по-своему

  • @romand4012
    @romand4012 4 года назад +4

    Репозиторий
    github.com/it-kamasutra/react-way-of-samurai
    Ссылка на коммиты
    github.com/it-kamasutra/react-way-of-samurai/commits/master

    • @Mykhailo_Vdovychenko
      @Mykhailo_Vdovychenko 3 года назад

      спасибо, как раз то что искал)

    • @user-mm3sd3uh6y
      @user-mm3sd3uh6y 2 года назад

      я приготовил для тебя специальную вип-комнату в раю, сынок

  • @alexanonymous5823
    @alexanonymous5823 3 года назад

    спасибо за постраничный вывод=))

  • @denysm5599
    @denysm5599 4 года назад +2

    Спасибо за поиски новых решений в подаче материала, но предыдущий формат этого курса по React - был лучше. Материал лучше запоминается, когда код набираешь вместе с ментором))

  • @IvanSuprovich
    @IvanSuprovich 3 года назад

    А я еще когда только-только сделали UsersPage сделал пагинатор через slice массива со страницами. Не знаю, насколько это корректно, но оно работает. А этот выпуск просмотрел для общего ознакомления, спасибо, Дим)

  • @piligr1m_ua_
    @piligr1m_ua_ 4 года назад +14

    что такое: import cn from "classnames" ? нашел ответ в комментах : npm i classnames

    • @kril5903
      @kril5903 3 года назад +1

      спасибо

    • @peschernuy
      @peschernuy 2 года назад

      Спасибо! Выручил!

  • @viktorshatalov1920
    @viktorshatalov1920 4 года назад +2

    Прошлый формат был лучше... Спасибо за лучший курс по react.js

  • @hennadiipetrov1967
    @hennadiipetrov1967 4 года назад +6

    Старый формат, но все равно спасибо, Димыч)

  • @n0escape
    @n0escape 10 месяцев назад +3

    Описывать и пересказывать по уроку нечего. Могу разве что добавить ниже чуток отредаченный Димын код пагинатора. Еще от себя добавлю, что код Димыча в общем рабочий, только надо проинсталисть библиотеку classnames. Без понятия что она делает, ибо не инсталил.
    mport React, { useState } from 'react'
    import s from "./Pagination.module.css";
    const Pagination = ({totalItemsCount, pageSize, currentPage, onPageChanged, portionSize = 10}) => {
    let pagesCount = Math.ceil(totalItemsCount / pageSize);
    let pages = [];
    for ( let i=1; i 1
    ?
    {
    onPageChanged(pages[0])
    setCurrentPortion(1)
    }}>toFirst
    {
    currentPortion !== 1 && setCurrentPortion(currentPortion - 1)
    }}> PREV

    : null
    }{
    pages
    .filter(p => currentLeftBorder {p}

    ))
    }{
    currentPortion < portionCount
    ?
    {
    currentPortion !== pagesCount && setCurrentPortion(currentPortion + 1)
    }}> NEXT {
    onPageChanged(pages[pages.length - 1])
    setCurrentPortion(portionCount)
    }}>toLast

    : null
    }

    }
    export default Pagination;

  • @user-ub8yh7ml5m
    @user-ub8yh7ml5m 3 года назад +1

    Сперва я подумал,что этот формат неочень, так как столкнулся с трудностьями в реализации, потмоу тчо до этого повторяешь за Димычем и все идет легко, а тут нужно самостоятельно думать, так вот я столкнулся с проблемой реализации, начал дебажить нашел ошибки и лучше понял материал, так что этот формат сложнее но намного лучше

  • @vladpobidash
    @vladpobidash 4 года назад

    Не, Димыч, не катит! Думал урок 24 минуты, сейчас все быстро сделаю и отдыхать, но...
    Искал баг, перекопал все что связано с Users, перебрал весь reducer, юзал кучу дэбагов везде где только можно...
    Ничего не помогло, отыскал коммит, почал по строчке анализировать и вставлять код - заработало!
    Ошибка была в hook useState(), где на автомате случайно вместо [] напечатал {} ...
    Но еще до момента поиска этого бага было куча проблем с недопониманием что как.
    Но, это был один из важнейших уроков, ведь так дэбаг я еще никогда не юзал, такой анализ кода был очень полезен для меня!
    В любом случае, спасибо, Димыч, за урок!

  • @schurickxxx
    @schurickxxx 4 года назад

    Димыч, подскажи, пожалуйста, какую книгу ты советовал почитать про TDD?

    • @ITKAMASUTRA
      @ITKAMASUTRA  4 года назад

      Любую!!! Есть на инглише именно на JS (может уже и на русском есть)
      А так любую!

  • @user-db5dm3dr6c
    @user-db5dm3dr6c 2 года назад

    То чувство, когда решил сделать сам и получилось как у димыча)) Как-будто взломал пентагон, ей богу XD Спасибо за уроки, друг!

  • @user-wd3tl2rx9p
    @user-wd3tl2rx9p Год назад

    Димыч, спасибо. paginator, постраничный вывод

  • @tema_skakun
    @tema_skakun 9 месяцев назад +3

    Дима, спасибо за урок)
    возможно кого-то тоже бесит, что после ухода со страницы users пагинатор сбрасывается на 1. исправьте код:
    let [portionNumber, setPortionNumber] = useState(Math.ceil(currentPage / portionSize));
    #reactJS #тестирование #практика #пример #уроки #курс

    • @chaikadxport
      @chaikadxport 2 месяца назад

      Почему после ререндера компоненты значение useState сбрасывается?

    • @tema_skakun
      @tema_skakun 2 месяца назад

      @@chaikadxport чтобы понять, как помочь мне нужно немного больше информации.
      если вы спрашиваете о кейсе со сбросом номера страницы, то на сколько я помню (а видео я смотрел больше полугода назад) Димыч по умолчанию в useState поставил 1 => вы перерендерили компонент => вы оказались на первой странице.
      если вы используете решение, которое я предложил выше, будет вам счастье.
      или же вы спрашиваете об ошибке в работе useState вообще, то у этого может быть много причин, например:
      Неправильное использование хуков: Убедитесь, что вы используете хуки useState внутри функционального компонента и вызываете их всегда в одном и том же порядке. Не пытайтесь изменять их значение напрямую.
      Побочные эффекты: Если вы имеете побочные эффекты, такие как асинхронные запросы или подписки, они могут привести к обновлению компонента, что может привести к повторному вызову функции и сбросу значения состояния. Для управления побочными эффектами используйте хук useEffect.
      Перерендер по причине изменения props: Если компонент перерендеривается из-за изменения его пропсов, это также может привести к сбросу значения состояния. Убедитесь, что вы правильно управляете пропсами и используете React.memo или shouldComponentUpdate, чтобы предотвратить ненужные перерисовки.
      Использование ключей при маппинге списка компонентов: Если вы отображаете список компонентов с помощью map и каждый элемент не имеет уникального ключа, React может считать, что это новый компонент и создаст его заново, что приведет к сбросу состояния.
      Изменение стейта вне React-а: Иногда стейт может казаться сброшенным из-за изменений, произошедших вне React-а, например, при использовании глобальных переменных или неправильном управлении данными из других источников.

  • @fargutvest
    @fargutvest 4 года назад

    Pagination
    номера страничек со стрелочками prev, next
    Круто Спасибо!
    React Redux

  • @user-xs2zw7ze6l
    @user-xs2zw7ze6l 2 года назад +2

    Димыч, летим в космос. У меня будут все юзеры сразу, просто буду скролить вниз, но спасибо, было интересно. У меня за окном война, а я бомблю Реакт. Кабзда какая кабзда

  • @marlonbrando458
    @marlonbrando458 3 года назад

    Комментарий и лайк!

  • @itweb7157
    @itweb7157 3 года назад

    сначала сделал свой, потом сделал как у Димы (со своими усовершенствованиями)...
    Дима, спасибо!
    #paginator, #постраничныйвывод - #Практика #ReactJS

  • @olegmilkin9694
    @olegmilkin9694 2 года назад +2

    Всё-же лень взяла верх и я просто прикрутил плагин для этого, наврядли такие штуки делаются ручками в проектах, но за старания однозначно спасибо Димычу

  • @Alex-ge7jt
    @Alex-ge7jt 4 года назад +1

    Такой формат тоже хорош! Тем более нужно учиться писать код самим. Тут посмотрели - сделали у себя по памяти. Тем более уже много разжованных видео было до этого. Думаю золотая середина будет чередовать выпуски, например 2 выпуска в старом формате, 1 в новом (или 3 через 1 и т.д.). Спасибо

    • @ITKAMASUTRA
      @ITKAMASUTRA  4 года назад

      Спасибо, хорошая тема

  • @user-pc9bl7uf1l
    @user-pc9bl7uf1l 3 года назад

    Благодарю!

  • @user-ml8hn5kg9e
    @user-ml8hn5kg9e 2 года назад +1

    Сегодня 20.12.21г. Этот формат видео неочень понятен, но заставляет подумать и самому разбирать процесс)))

  • @eddyvir4
    @eddyvir4 4 года назад

    + предыдущий формат

  • @technical777
    @technical777 4 года назад

    Этот формат подходит ( на 93 видео, если бы ты начинал с такого формата, то однозначно не подходит ), пришлось взять лист и ручку прописать формулу, проговорить вслух что бы стало понятно самому себе.
    Было бы хорошо, если больше твоих уроков ( объяснений ) с задачами аналогичными этой где нужно,что то решить опираясь на явно математическую логику. Задач с решение по программированию с уклоном на математическую логику на RUclips не хватает, Димыч, а у тебя получатся потрясающие видосы.

  • @resenpaii
    @resenpaii 3 года назад

    Старый формат душевнее. И камера с афйона тоже :)

  • @user-vw8gp1tq8o
    @user-vw8gp1tq8o 4 года назад +41

    Такой формат хуже,потому что все слишком гладко,а при разработке обычно есть проблемы и лучше смотреть как их решает человек по опытнее чем Джун)

    • @user-il4ph3fr6h
      @user-il4ph3fr6h 3 года назад +1

      или недоджун)))

    • @mikalai_root
      @mikalai_root 3 года назад

      @@user-il4ph3fr6h или недотрэйни))

  • @user-ix6ic3vp2r
    @user-ix6ic3vp2r Год назад +1

    Привет Димычу и всем самураям. По видео. На мой взгляд изложение получилось "рваным" не упорядоченным. И в голове не сложилась детальная картинка. Хотя основная канва понятна. И это не смотря на то что я свой пагинатор уже написал сам. Я столкнулся с его необходимостью еще на этапе отображения страниц 55 урок. Я изучаю твои видосы и в 2022 году и у меня получилось более 3500 страниц по 10 юзеров!!! Сейчас уже более 4000!!! Лучше топи по прежнему. Так понятней. Если кому будет интересно то я реализовал свой пагинатор в виде массива который заполняется один раз, в самом начале, и состоит из элементов тоже массивов - всех чисел входящих в порцию (по терминологии Дмитрия) и все что мне нужно при навигации это выдернуть нужный массив и отобразить все входящие в него цифры и при этом нет необходимости вычислять начальную страницу порции и конечную. Ибо они уже есть.

  • @tatianakruglaya6760
    @tatianakruglaya6760 4 года назад +1

    shift + f6 - аккуратно!! - чуть с ума не сошла! Видео супер, только жаль, что не было услышано хоть пару слов о класснеймах( . Формат видео paginator, постраничный вывод - Практика ReactJS мне не зашел т к я неуверенно двигаюсь в обучении и было бы здорово повторять первые шаги! спасибо Димыч за труд!

  • @Vllad_Ko
    @Vllad_Ko 4 года назад +3

    За старый формат, фишка и уникальность данного курса по React Redux в разжевывании,
    а ну и тема библиотеки classnames не раскрыта ;)))

  • @Al4ii
    @Al4ii 3 года назад

    Увидел Димыча - поставил лайк!!

  • @bugaga8144
    @bugaga8144 2 года назад

    Это видео Как самостоятельная практика, лучше конечно когда пишешь код онлайн

  • @SunlighT_90
    @SunlighT_90 3 года назад

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

  • @vegeman8954
    @vegeman8954 3 года назад +5

    Димыч, я все конечно понимаю!!! Но как твоя компонента меняет setPortionNumber в зависимости от currentPage? Если ты выберешь любую страницу после десятой, при rendere portionNumber = 1 и вся компонента перерисуется в дефолтный вид. Скостим тебе это косяк, на то что ты оставил это нам на закуску) Спасибо за урок!) Мотивируешь!
    Если кому интересно я решил это таким костылем:
    const [portionNumber , setPortionNumber ] = useState(Math.floor(currentPage/10) + 1)
    P.S. Даешь курс на ХУКАХ c правильной архитектурой

  • @quantumvector1783
    @quantumvector1783 2 года назад

    С classnames всё просто. Функция cn возвращает либо название одного стиля pageNumber, либо двух selectedPage и pageNumber. В функции cn мы отправляем объект, где название свойства - это название нужного стиля, которое вернётся и пропишется в className, при условии, если значение свойства объекта не равно false.

  • @sergeyistominov5880
    @sergeyistominov5880 2 года назад

    Для лучшего ранжирования! =)