[ВАЖНО - Читай описание] Таблица на Vue.js. VUEX+AXIOS+API. Пагинация и сортировка данных.

Поделиться
HTML-код
  • Опубликовано: 20 янв 2020
  • --------------------------------------------------------------------------------------------------------------------------------------------------------
    ВАЖНО - Видео на этом канале 3х летней давности и большинство уже НЕАКТУАЛЬНЫЕ в силу изменения синтаксиса, методов и подходов во Vue.js версии 3. Все видео были записаны на Vue.js версии 2. Много чего уже просто НЕ БУДЕТ РАБОТАТЬ или выдаст ошибки.
    Новый канал на актуальном стеке Vue.js v3, Pinia, Vue router@next, Ionic (мобильные приложения), FireBase (база данных, аутентификация и тд) - / @intothecoding
    НО! Новый канал ведется на АНГЛИЙСКОМ ЯЗЫКЕ - так что у вас есть уникальная возможность научиться кодить и подтянуть язык - так как Английский нужен всегда!
    Жду вас на новом канале!
    --------------------------------------------------------------------------------------------------------------------------------------------------------
    В этом уроке я научу вас как за пол часа создать таблицу с реальными данными, полученными через API, выводить данные по страницам и сортировать. В материале так же использованы:
    - VUEX (центральное хранилище данных)
    - AXIOS (для получение данных через API)
    - JSON-SERVER (fake-api)
    Приятного просмотра!

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

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

    Спасибо огромное за ваши уроки! Все просто и понятно! Продолжайте снимать!

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

    Спасибо, куча полезных видео по вью посмотрел. Почти во всем разобрался, а вот связку vuex + axios ты мне помог понять. Жму руку 🤝

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

    Канал достоин подписоты. Побольше Vue - как он самый легкий из (Vue, React, Anglural)

  • @ZaurBejerei
    @ZaurBejerei 4 года назад +9

    Огонь!)

  • @Happy-gf9xg
    @Happy-gf9xg 3 года назад

    Крутой канал! Спасибо за видео

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

    Очень полезный урок! Респект

  • @mikhail2238
    @mikhail2238 4 года назад +5

    Спасибо за видео! Единственное нормальное объяснение реализации пагинации которое я видел. Лайк!

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

      Михаил Сергеевич рад стараться:)

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

      @@gofrontend2220 а не подскажите, из за чего после обновления страницы может все ломаться и ничего не отображаться на странице (добавлял эту возможность на свой сайт)? Дело видимо именно в добавленной пагинации, ибо если её закомментить то все работает как раньше :/

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

      Mikhail так трудно сказать. Надо кол видеть. Можете в телеграм написать @aboltnev

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

      @@mikhail2238 Из-за того, что у тебя таблица не может стартовать из-за отсутствия данных. Скорее всего в хранилище нужно прописать users = []

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

    спасибо большое за пагинацию более чем понятно

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

    Спасибо большое!

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

    лучшее видео!

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

    как раз на тестовом задании нечто подобное дали. начал гуглить, на твой видос наткнулся) то что надо.
    вот если бы ещё показал как сделать asc desc было бы 5+++ ))

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

    Классно

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

    Spasibo! Dolgo iscala prostyu schemy kak postroit pagination

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

    Таблица - это хорошо.
    Не хватает CRUD функционала. Например эконки EDIT на каждой строке, кликнув на которую появляются кнопки save/cancel и мы можем изменить данные.

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

    Лайк за шутку

  • @VIMPdev
    @VIMPdev 3 года назад +26

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

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

      А как правильно? подскажите видео или материал по лучше?

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

      @@isos6534 Я уже не помню что в видео, но по хорошему если в таблице, допустим выводится 20 записей, при загрузке страницы из базы тянутся первые 20 записей и выводятся. На второй странице пагинации снова идет запрос к базе и тянутся записи с 21 по 40 и так далее. Конечно можно оптимизировать, что бы при возврате на первую страницу не лезть в БД, но это уже нюансы.

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

      @@VIMPdev спасибо, а можешь туториал сделать?

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

      ​@@VIMPdev ок, что делать с сортировкой? Каждый раз при запросе к БД сортировать данные таблицы и брать нужные записи? Или подготавливать заранее отсортированные таблицы в БД и зависимо от запроса тянуть данные с разных таблиц?

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

      @@clevervlad1999 нет, этим всем занимается api по которому вы обращаетесь. Вы просто передаёте нужные параметре в запросе и вам возвращается отфильтрованные данные.

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

    А как сортировать в обратном порядке, при последующих кликах? как toggle

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

    Тот момент, когда ставишь лайк одновременно с кнопкой воспроизвести) спасибо! У вас есть свой курс?

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

    data: github.com/antonboltnev/vue-portfolio-code-example/blob/master/db.json

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

    Pagination 20:21 ( pun =))

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

    ''супер таблица, спасибо за просмотр) штука" хехе)

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

    Добрый день!
    Спасибо за прекрасные уроки, все понятно, даже в каком-то смысле нативно.
    Кстати, есть помарочка, которая вызвала у меня небольшой затуп: её видно в коде, скажем, на 36:35, в самом верху, в pages(), деление нужно производить не на 10, а на this.usersPerPage; вдруг кому будет полезно.
    Кстати, вопрос по стилю: вы как-то разделяете использование CamelCase и нижних подчеркиваний в названиях переменных или пишете вперемешку оба?

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

      UPPER_SNAKE_CASE используется для констант.

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

    я чет не пойму ток одного, в чем смысл такой пагинации и сортировки именно на фронте?(т.е для этого нам надо получать сразу все данные из БД, а если их там 10 000+) так кто то вообще делает? я всегда думал, что например для пагинации инфу надо получать кусками(т.е нажал на страницу получил нужные позиции с сервака) и касательно сортировки тож самое

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

    Здравствуйте! Как выводить данные, если на странице сделать поиск? Ведь по сути на страницу выводится массив "вырезанный" инструментом slice и мы не можем искать в нем, нам нужно искать в общем массиве. Спасибо большое за видео! Буду благодарен если ответите.

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

    Вопрос: Обязательно ставить return в стрелочных функциях, по-моему это и так подразумевается? Например когда мы задаем дэфолтное состояние в пропсах.

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

      не обязательно, оно работает by default

  • @Alexander-wx1hy
    @Alexander-wx1hy 3 года назад +1

    есть такой момент, если например нажать в браузере назад, то будет перекидывать на предыдущую страницу на сайте, а не по пагинации

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

      тут реализация без vue-router, в SPA преложениях с установленным vue-router спокойно привяжете маршруты к соответствующим страничкам. У автора на канале есть уроки по vue-router.

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

    Спасибо за урок! У меня такой вопрос: а нельзя было использовать Vuetify? Там все эти фишки(сортировка, пагинация) уже встроены. Это значительно сократило бы время. И используете ли вы сами для проектов Vuetify?

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

      ai Gooner ну мы же вроде как учимся:) а вьютифай сделает все за нас и какой смысл в этом?) я не использую его в проектах. Слишком много лишнего

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

    а как использовать связи ORM Laravel во vue? не могу найти информацию совсем

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

    начало разбивки на постраничную пагинацию 21:00

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

    Есть бесплатный источник с подготовленной базой данных json
    Разные варианты данных:
    @t - другие варианты
    конкретно для этого урока:
    @t
    Если хочется работать со своими данными тогда можно, как у автора видео.
    Плюс, источника выше - не надо постоянно перезапускать db.json

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

    prop: type check failed for prop "row_data". Expected Object, got Array
    Все делал как на видео, но поймал вот такую ошибку

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

    Оч полезное видео, большое спасибо!
    Но возник один вопрос, который я не могу разобрать, можете сможете разъяснить мне пожалуйста, а именно:
    Зачем в App.vue мы импортируем из vuex mapGetters и после передаем поле users в пропсы компонента
    Почему мы сразу в v-table.vue также не импортируем из vuex mapGetters и не используем уже непосредственно там поле users? Зачем передавать через пропсы?

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

      Mr Reflection в принципе можно, но есть риск того, что таблица уже будет рисоваться в dom, а данные в геттере еще не будут готовы и тогда получим ошибку. Поэтому мы дергаем геттер в родителе, так как дочерний компонент таблицы замаунтится в дом только тогда, когда родительский закончит маунт и как следствие геттер уже будет запрошен и мы гарантированно загрузим его в таблицу.

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

      @@gofrontend2220 понял, спасибо за разъяснение

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

      @@gofrontend2220 привет, куда пропал? Ждем твоих крутых видосов. Надеемся - что у тебя все хорошо.

  • @Fess-dt4eo
    @Fess-dt4eo 2 года назад

    Может кто подскажет , в каком уроке подключали Material Icon ? Я так смотрю он тут не компонентом , а html вставляется , интересно посмотреть поэтапно как установить , при чтении плохо воспринимаю , нужно прям мелочи увидеть , чтобы вопросы отпали

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

      проимпортируй в main.js import 'material-design-icons-iconfont' и тогда сможешь прописывать тег с названием нужной иконки

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

    Не совсем понял, как вы по переменной pages, которая возвращает число прошлись циклом.. (22.47)

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

      да, мне тоже интересно

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

    Посмотрел этот урок и урок 4/8 про Axios. Сижу уже день не могу получить данные. Это все будет ли работать на Vue CLI 3, Vuex 4 ? Я в форумах искал не нашел ответа консоль не видит ошибок. Что делать ПЖ помогите...(ИСПРАВЛЕНО ответ в кометах)

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

      Ошибка была исправлено.)) Ошибка заключалось в моем невнимательности, поле this.GET_PRODUCTS_FROM_API я забыл поставить скобки))))
      mounted() {
      this.GET_PRODUCTS_FROM_API()
      }

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

    Аааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааа!
    Аааааааа!
    Аааааааааааааа!

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

    Если я хочу сделать пагинацию на по количеству строк на странице, а по первой букве user.name ?

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

      Сделал. Корявенько, но получилось.

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

    20:40 Давайте Сделаем Пагинацию

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

    AxiosResponse возникла ошибка "Type annotations can only be used in TypeScript files.ts(8010)" в файле store. Может у кого тоже была, подскажите решение

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

      его не надо писать , это шаблонное заполнение от ВебШтрома(Среды на котором автор пишет)

  • @gofrontend2220
    @gofrontend2220  10 месяцев назад

    ! ВАЖНО - Читайте описание к видео ! 🔥🔥🔥👆👆👆

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

    Добрый день а как можно пагинацию ограничить, если данных слишком много которые получаются через API, а если конкретно то данных 7326 и там 440 страниц, которые опознались пагинацией, и как сделать допустим 1,2,3,4,5,6.......438.439.440, если не сложно помогите пожалуйста, пагинация сделана по вашему примеру

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

      Решили вопрос.? Отпишите пожалуйста

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

      @@TAtoshkkko Давно решил, просто используя плагин пагинации

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

      @@user-nb1ui6kl6g не могли бы вы пожалуйста скинуть код или ссылку на решение данного вопроса? Был бы крайне признателен!

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

      @@HearonPlay Этот вопрсо уже давно не актуален, так как эту работу решают плагины на пагинацию, своими силами не имеет смысла решать задачу

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

      @@user-nb1ui6kl6g спасибо

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

    Реально, а почему не выложить исходники? Я наткнулся на ошибку и хоть убей не могу найти её сравнивая свой код и код на видео, исходник бы помог :(

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

    Это фронт или бэк?

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

    Полезный урок, но как пожелание: поменьше "ээээ"

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

    все хорошо, но а если 50 страниц? и квадратиков пагинации будет больше чем список пользователей.

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

      pages.slice(index-1, index+1).map(page => page)

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

      @@nuraimaratova480 спасибо. но вопрос не в теоретической реализации для меня конкретного, а чтобы это показать зрителям.

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

    Нифига се и никакой магии??? Воистину говорю вам браты если плохо знаешь CSS, HTML и JavaScript то веб полон чудес и магии для тебя)))))

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

    Исходники можно же было выложить

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

      напиши сам =)

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

      @@user-cl1gh4ho5b ЖЕЛАНИЕ ПРОПАДАЕТ СМОТРЕТЬ И СОВМЕСТНО ДЕЛАТЬ, ТЕРЯЕШЬ ЗРИТЕЛЕЙ, ПРОГРАММЁР

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

      @@user-ym6dq4bi3f я только что прочитал набор слов не связаных между собой))

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

      А вы хотите все готовое? Такого не будет. Я здесь учу людей как работать с vue. За готовыми решениями - на гитхаб

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

      @@user-cl1gh4ho5bнеудивительно, Помимо того, что соображаешь туго, наравне с этим составляешь свои видео.

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

    Не показано, что прописать в index.html, чтобы всё заработало.

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

      d0n pan там ничего не надо писать. А что у вас не работает?

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

      @@gofrontend2220 не отображается на странице, всё делал по видео. На странице пусто. Если есть телеграмм, могу скрины отправить.

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

      @@gofrontend2220



      Приложение


      var app = new Vue({
      el: '#app',
      data: {
      }
      })
      Что я здесь забыл указать?

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

      d0n pan давайте. @aboltnev

  • @sviatoslav.hrabar
    @sviatoslav.hrabar 3 года назад +1

    срака, а де исходник