[ВАЖНО - Читай описание] Урок 5/8. Добавление, удаление и изменение кол-ва товаров в корзине

แชร์
ฝัง
  • เผยแพร่เมื่อ 14 พ.ย. 2024

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

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

    Убил часа 3 на 15:40
    mounted() {
    const cartItemData = this.cart_item_data;
    cartItemData.quantity = 1;
    ,
    Мулька в том чтобы переопределить переменную

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

      Большое спасибо тебе, я тоже убил 3 часа сука на это. Я редко оставляю коммы, но тебе отдельное спасибо. Даже если не увидишь это, то всё равно спасибо)

    • @АртемОлійник-р2ц
      @АртемОлійник-р2ц ปีที่แล้ว +1

      Спасибо за решение!!👍

    • @Alex-sb3fd
      @Alex-sb3fd ปีที่แล้ว +1

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

    • @СергейКоролев-о6й1я
      @СергейКоролев-о6й1я ปีที่แล้ว

      спасибо!

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

    Ребята!
    Не стоит мутировать пропсы как в 15:40.
    В документации Vue про это написано, и сам Vue должен выкидывать warning в консоль про такое его использование.
    Если мы хотим работать с какими-то данными в дочернем компоненте, то внутри него стоит использовать новую переменную, например определяемую там же в хуке жизненного цикла.

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

      Мне кажется, вы ошиблись с таймлайном, вы наверное имели ввиду 25:40 время, а не 15:40

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

      ну да, vue js очень быстро изменяется, я не успел отдохнуть, как узнал что некоторые функции были вообще вырезаны...

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

    Ура! все работает, перехожу на шестой урок )

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

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

  • @olegovich8161
    @olegovich8161 4 ปีที่แล้ว +14

    Господи, какая же годнота

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

    Спасибо за мощный урок!

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

    Большое спасибо за ваши уроки, очень помогают разобраться с VUE/VUEX . Очень хотелось бы еще ваших уроков про VUE + Axios + VUEX, может какое то приложения c спорт статистикой подтянуть с бесплатного API.. в таком духе, в любом случае буду рад вашим новым урокам !)

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

    отличный урок!

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

    ну этот комментарий можно написать под последним видео.
    Зачастую, подобные видео для новичков же?
    Вот значит по всему плейлисту он сделал свое какое то приложение, даже смог его собрать (я про себя), а на хостинг-то как его грузить? вот на regru например?
    как на хостинге запускать тот же json-server?
    вот есть примеры не связанные с firebase и его аналогами?
    а так и правда очень годно. спасибо.

  • @Виталий-е9д5е
    @Виталий-е9д5е 4 ปีที่แล้ว +1

    Все отлично! Спасибо!

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

    Нормально все так объясняется Спасибо

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

    Да все супер! Очень интересно!

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

    А можно новый ключ-значение с количеством добавлять просто в мутации перед записью в стэйт??

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

    Доброго времени дня! Спасибо за контент! Такой вопрос, как быть если товары из массива json не пронумерованы так как во vuex, как их тогда удалять?

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

    Жаль ,что бросили вести контент

  • @sateevtima7914
    @sateevtima7914 4 ปีที่แล้ว +3

    заслуженный лайк, урок сложный.
    Автор не торопитесь, и чуть побольше пояснений используемых решений, что и куда переходит, можно прям стрелочкой мышки показывать- и будет идеально:)
    а так все без вопросов

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

    Отличные видео! Нравится как вы излагаете мысль, ВОПРОС: "почему при обновлении страницы все обнуляется. как сохранить состояние приложения до момента отправки данных на сервер"? спасибо

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

      borison2004 можно сохранять состояния в local или session storage. Но это так себе история.

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

      @@gofrontend2220 Спасибо за уроки! Тоже волнует этот вопрос и по этому задам более развернутый, уточняющий:
      Если " local или session storage. Так себе история." - то какой путь будет верный?
      Вообще подскажите, подход показанный в этом видеокурсе используется на практике для создания сайтов с активным обращением к БД, будь то магазин или блог?
      Я только познакомился с хранением данных в json для подобных задач и не понимаю - тут это сделано только для примера, на практике же нужно использовать другие технологии для связки, например, с mysql? Или же в реальном мире используется json?
      Если json это заплатка для курса, то подскажите пожалуйста стек правильных технологий для полноценного объемного сайта на Vue.
      Спасибо.

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

      Montenote json server на бою не используется. Нужны бд и реальные апи. Но это уже бекенд тема. Я в ней не шарю

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

      @@gofrontend2220 Спасибо

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

    Почему нельзя было AddToCart вызвать из CartItem? Зачем в родителя прокидывать?

    • @x-bit5193
      @x-bit5193 3 ปีที่แล้ว

      Возможно что бы не плодить mapGetters

  • @АлександрБойко-у3ы
    @АлександрБойко-у3ы 3 ปีที่แล้ว +2

    А зачем передавать между родителями и детьми, когда можно в детях подключить mapActions и mapGetters и сразу вызывать действия или гетеры. Какой смысл передавать родителю и у родителя вызывать действия??? Или передавать ребенку гетер, когда ребенок сам может получить геттер???

  • @almat.kambetov
    @almat.kambetov 4 ปีที่แล้ว

    Доброго времени суток! Интересные уроки, спасибо. Вопрос по actions/mutations. При удалении товара из корзины вы пишете action DELETE_FROM_CART и комитите mutattion REMOVE_FROM_CART. Удаление товара происходит синхронно, почему тогда сразу не инициировать mutattion в компоненте v-cart? (Действия происходят в промежутке ~20:26 - 22:01)

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

      Almat Kambetov потому что, если параллельно будут возможные запросы - синхронность может испортить все. Лучше всегда писать через action

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

    А как же легаси) Vue2 жив)

  • @МаксимШадчин
    @МаксимШадчин 3 ปีที่แล้ว

    [Vue warn]: Error in render: "Error: Cannot find module './undefined'"
    При клике на добавить карту вылетает ошибка и не могу ее решить,может кто подскажет

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

    а я удалял через .filter по id

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

    Не совсем понял, зачем мы именно в "v-main-wrapper" прописываем v-bind:cart_data="CART".
    Ведь это заставляет нас прописывать пропс cart_data в "v-cart" и потом еще пропс cart_item_data в "v-cart-item".
    Почему нельзя было как в случае с каталогом прописать это в файле "v-cart", и потом просто один пропс cart_data в его дочернем компоненте?
    Надеюсь нормально сформулировал вопрос)
    Заранее спасибо

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

      Верно, но так как мы ставим условие на корзину через v-if в котором смотрим на геттер CART, то раз геттер уже используется в враппере, с помощью него и передадим в пропсы его самого. Можно сделать как и вы сказали. На самом деле дальше в уроках, когда мы подключим vue router, там вообще все изменится сильно:)

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

      @@gofrontend2220 Понял, спасибо за быстрый ответ)

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

    I have any error: Uncaught (in promise) TypeError: this.$set is not a function. Time: 15:20. How i can solve this error?

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

      mounted() {
      const cartItemData = reactive(this.cartItemData);
      cartItemData.quantity = 1
      }

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

      @@yzums reactive is not defined

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

      @@yzums
      mounted() {
      const cartItemData = this.cart_item_data;
      cartItemData.quantity = 1;
      ,

  • @АннаЛупанова-ы2ь
    @АннаЛупанова-ы2ь 4 ปีที่แล้ว

    А как через post axios отправлять артикул товара на бэк?

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

    Появилась ошибка Uncaught RangeError: Maximum call stack size exceeded при импорте корзины, не могу понять как ее пофиксить.

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

      Ann Vinnik значит вы замыкаете бесконечный вызов какой то функции. Это не ошибка импорта. Что то в коде. Посмотреть бы код ваш. Напишите мне в телеграм @aboltnev

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

      @@gofrontend2220 я нашла ошибку, я в двух файлах одновременно импортила корзину, поэтому получилось замыкание. Изначально начала писать код не в том файле и не почистила, вот и получилась ошибка. Спасибо большое что ответили. Очень хороший курс, все доступно и понятно) Надеюсь больше таких глупых ошибок не допущу.

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

      Ann Vinnik ошибки не глупые. Ошибки дают вам опыт:)

    • @Олександр-п3т3ж
      @Олександр-п3т3ж 3 ปีที่แล้ว

      Такая-же ошибка также минут 30 долбался

  • @АндрейМещеряков-м9е
    @АндрейМещеряков-м9е 4 ปีที่แล้ว +1

    Как же много действий, чтобы заработала кнопка удаления... Изменение кол-ва товаров в самой корзине рассматривается через +- ?

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

      Андрей Мещеряков :) да конечно. В следующем уроке, когда перенесем корзину на другой url

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

    базу данных на джейсоне постоянно надо развертывать?

  • @ВадимМещеряков-ц1г
    @ВадимМещеряков-ц1г 4 ปีที่แล้ว +1

    Решил пройти эти уроки с Vue 3 (раз он уже вышел). Возникшие нестыковки разрешил. Уперся в неработающий this.$set(this.cart_item_data,'quantity',1); Ругается v-cart-item.vue:39 Uncaught (in promise) TypeError: this.$set is not a function. Так и не смог победить (да же в отладчике не понял причины). Что бы завершить урок пришлось добавить в db.json поле "quantity":0

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

      С vue 3 работать не будет. Можете даже не пытаться. На момент записи был только v2

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

      @@gofrontend2220 Добрый день, я тоже столкнулся с такой проблемой как у Вадима, добавление в db.json строки "quantity":0 не помогло, тоже сижу на третей версии Vue. Как можно решить эту проблему? Спасибо

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

      @@reustick this.$store.dispatch('addToCart', {...this.product, quantity: this.quantity})

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

      А вот так?
      mounted() {
      this.cart_item_data.quantity= 1;
      },

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

      @@malyan не, так тоже не работает

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

    Четко

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

    Удаление с slice(index, 1) не с работало, помогло так:
    var carts = state.cart
    carts.splice(carts.indexOf(index), 1)

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

      Newbios75 значит в аргумент index не то передаете

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

      не slice, а splice

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

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

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

      Alexander Shulgin на фронте нельзя. Фронт обнуляется при релоуде. Это стандартное поведение. Вы можете максимум в фейк апи сохранять корзину в базу либо хранить ее в local или session storage. Но это так то костыль

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

      @@gofrontend2220 спасибо. Уже решил это на стороне бэкэнда, при помощи vue-session.

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

      @@gofrontend2220 Уроки крутые, почти сразу становится понятно что Vue штука не страшная, как изначально казалось))

    • @АннаЛупанова-ы2ь
      @АннаЛупанова-ы2ь 4 ปีที่แล้ว

      @@alexandershulgin958 может подскажете мне как вы решили эту проблему?

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

    Почему при использовании vuex Вы все данные через пропсы постоянно гоняете, если можно написать геттеры и получать данные напрямую из стейта?

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

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

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

      Go Frontend понял спасибо, а у Вас есть тг канал или что-то в этом роде, где можно вопросики позадавать?

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

      11111 @aboltnev это телега моя. Туда задавайте

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

      @@gofrontend2220 через vuex не так муторно это делать

  • @ОлесяАсанова-к4к
    @ОлесяАсанова-к4к 2 ปีที่แล้ว +1

    quantity не маунтится😭😭😭

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

      Ахах тоже тут застрял, е6учий Vue 2

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

      Не рашили?

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

      mounted() {
      const cartItemData = this.cart_item_data;
      cartItemData.quantity = 1;
      ,

  • @виртуоз_ру
    @виртуоз_ру 4 ปีที่แล้ว

    👍

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

    2:51 почему не использовать v-show?

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

      Oleg Olegovich v-show скроет элемент, но по факту он будет на странице. Зачем лишний раз монтировать в дом дерево то, что не обязательно будет там?

  • @ЮрийБлинов-л5м
    @ЮрийБлинов-л5м 3 ปีที่แล้ว

    у меня реактивность пропала прочему то

  • @ВасяПупкин-н9д9с
    @ВасяПупкин-н9д9с 4 ปีที่แล้ว

    А разве это все не должно делаться на бэкенде?

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

      Должно. Но я же не бекендер ) а показать или симитировать логику как-то надо

  • @anton-trofimov
    @anton-trofimov 4 ปีที่แล้ว

    У меня если с конца удалять, то удаляются элементы наоборот)

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

    пожалуйста не чмокай