[ВАЖНО - Читай описание] Получение значений из URL Vue.js. $router.query

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

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

  • @gofrontend2220
    @gofrontend2220  5 ปีที่แล้ว +4

    ДРУЗЬЯ! На 5:06 примерно, лучше метод клика вешать не на всю карточку товара, а на фотографию только. Иначе будет даже при клике на Добавить в корзину роутинг менять. Возможно я перезалью видео с комментарием в этом месте.

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

    Автору респект за проект

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

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

  • @AlexanderGrinvald
    @AlexanderGrinvald 4 ปีที่แล้ว

    Обалденный урок!!!

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

    А что будет если не передать query параметр в маршрут? Как это можно предусмотреть и редиректить клиента на главную страницу, например?

  • @GeliosGarik
    @GeliosGarik 4 ปีที่แล้ว

    Помогите, пожалуйста, с подключением GTM в приложение Vue. Нашел на npm vue-gtm, его почему-то советуют подключать в router/index.js.
    Сделал всё как описано в пакете для v.2, в package.json указал конкретно что "vue-gtm": "3.0.0-vue2". Сайт работает, но _Failed to load resource: the server responded with a status of 404 ()_ и не видно в консоли элементов, чтобы добавились нужные штуки в head и body.
    up: удалил пакет и вставил напрямую, по старинке в файле index.html - ошибка в console осталась та же

  • @adventure229
    @adventure229 4 ปีที่แล้ว

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

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

    Спасибо, очн сильно помог

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

    Для работы клика на компоненте я использую @click.native, а чтобы клик не распространялся на "add to cart" я бы сделал - @click.self

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

    Антон, возвращайся на Ютуб - ты нам нужен

  • @АртемБястик
    @АртемБястик 5 ปีที่แล้ว +1

    И наверное лучше бы было сделать гетер который по id возвращал бы товар из стора в компонент. Таким образом работа с данными и представлением была бы разделена

    • @gofrontend2220
      @gofrontend2220  5 ปีที่แล้ว

      Ну если в проекции на полноценный проект и реальное API - то да

  • @АртемБястик
    @АртемБястик 5 ปีที่แล้ว +2

    Можно в map стрелочную функцию делать, тогда контекст не будет теряться

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

      Куда-то мои ответы пропадают. Можно и стрелкой

  • @АртемБястик
    @АртемБястик 5 ปีที่แล้ว +1

    И вместо map на 11:39 метод find было бы правильнее использовать

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

      Согласен. Уроки рассчитаны на новичков и не хотел особо еще и запутывать с js методами работы с массивами. Можно и через filter, а можно и просто for of циклом.

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

      @@gofrontend2220 честно? если новичок запутается в методах работы с массивами, нечего ему пока что в вуе делать

  • @ojgenn
    @ojgenn 5 ปีที่แล้ว +3

    очень. очень печально. если вы не собираетесь из текущего массива делать новый, то не мапайте. есть forEach, find и ряд других для этих случаев. прямо чувствуется подход разрабов реакта, которые кроме мапа ничего не знают. далее автор грубейшим образом нарушил dry, и этого я совсем не выдержал. зы. для получения данных по одному продукту нужно юзать геттеры, а не брать весь каталог и бегать по нему в компоненте. в общем, сплошной антипаттерн

    • @gofrontend2220
      @gofrontend2220  5 ปีที่แล้ว

      Eugen Udalov мне нужно делать из массива новый, так как я работаю с геттером, который возвращает исходный массив товаров. Менять я его не могу, так как он служит для рендера всех товаров в каталоге, так что я его маплю в новый и показываю результат. Если вы про то, что я фильтрую геттер не в сторе, а в компоненте - а если нет гарантии, что в приложении нужно будет еще где то так же фильтровать исходный геттер, то зачем это делать в vuex? Store служит для работы с данными, которые будут использованы не в 1 компоненте. Поэтому я и работаю с этим геттером в компоненте, так как больше такая фильтрация нигде пока не используется. Как будет использоваться - перенесу в vuex этот метод. Далее. Я и так работаю с геттером. Если приложение инитится не как обычно, а со страницы отдельного товара мне в любом случае надо делать запрос к api. Другой вопрос, что не корректно было запрашивать ВСЕ товары, когда нужен только 1. Но api для получения 1 товара нет. Точнее я его не создал так как не предвидел:) записываю в real-time. В этом соглашусь и учту. Спасибо за советы!

    • @ojgenn
      @ojgenn 5 ปีที่แล้ว

      @@gofrontend2220 что-то вы похоже не разобрались с vuex. в частности с геттерами. вы не фильтруете исходный массив, вы вытаскиваете из него нужный элемент. это можно и нужно делать в геттере, а не в компоненте. и в любом другом месте это так и будет работать. далее. вы не меняете и не получаете в мапе новый массив. вы мапой вытаскиваете элемент отдельный. причем таким себе способом

    • @ojgenn
      @ojgenn 5 ปีที่แล้ว

      @@gofrontend2220 ну и наконец, если нужен инит, и нужно избежать нарушения dry, значит инит должен быть где в инициализации приложения. но не повторять одно и то же на разных роутах. я не знаю, где это происходит у вуя, я с ангуляр давно работаю, но наверняка есть более красивые варианты

    • @gofrontend2220
      @gofrontend2220  5 ปีที่แล้ว +4

      Eugen Udalov такой способ получения товаров сделан ТОЛЬКО в случае, если первая открытая страница это карточка товара. Это и есть компонент с инитом. Этот урок был сделан для того что показать как класть и брать значения из урл, не более:) в случае если переход будет происходить из каталога, то я просто в роутер через params передам объект товара:) но еще раз говорю, целью было дать понимание как положить значение в урл через router.query, а потом забрать это значение где то еще. Я даже выпущу урок с рефакторингом. Поставим флаг, следящий за тем если инит происходит из карточки товара - тогда возьмем товар из урла. Если как положено - парамсом из каталога. Люди сами потом решат как им работать с данными. Я лишь показал как с урлом работать. Не более. Этот видео курс вообще далек от идеала best practice. Я просто хочу людям основы работы с данными, с api, router и vuex показать

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

      @@ojgenn Критиковать всегда просто. Запишите свой ролик . С удовольствием посмотрю.

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

    для тех кто недоумевает почему в конце в корзину попадет продукт без количество или с nan то исправьте код в вычисляемом свойстве product page :
    let result = {}
    let vm = this
    this.PRODUCTS.map(function(item) {
    if (item.article === vm.$route.query.product) {
    result = item
    }
    })
    //чтобы отображалось количество
    let productData = {...result, quantity: 1}
    return productData