Большое спасибо тебе, я тоже убил 3 часа сука на это. Я редко оставляю коммы, но тебе отдельное спасибо. Даже если не увидишь это, то всё равно спасибо)
Ребята! Не стоит мутировать пропсы как в 15:40. В документации Vue про это написано, и сам Vue должен выкидывать warning в консоль про такое его использование. Если мы хотим работать с какими-то данными в дочернем компоненте, то внутри него стоит использовать новую переменную, например определяемую там же в хуке жизненного цикла.
Большое спасибо за ваши уроки, очень помогают разобраться с VUE/VUEX . Очень хотелось бы еще ваших уроков про VUE + Axios + VUEX, может какое то приложения c спорт статистикой подтянуть с бесплатного API.. в таком духе, в любом случае буду рад вашим новым урокам !)
ну этот комментарий можно написать под последним видео. Зачастую, подобные видео для новичков же? Вот значит по всему плейлисту он сделал свое какое то приложение, даже смог его собрать (я про себя), а на хостинг-то как его грузить? вот на regru например? как на хостинге запускать тот же json-server? вот есть примеры не связанные с firebase и его аналогами? а так и правда очень годно. спасибо.
заслуженный лайк, урок сложный. Автор не торопитесь, и чуть побольше пояснений используемых решений, что и куда переходит, можно прям стрелочкой мышки показывать- и будет идеально:) а так все без вопросов
Отличные видео! Нравится как вы излагаете мысль, ВОПРОС: "почему при обновлении страницы все обнуляется. как сохранить состояние приложения до момента отправки данных на сервер"? спасибо
@@gofrontend2220 Спасибо за уроки! Тоже волнует этот вопрос и по этому задам более развернутый, уточняющий: Если " local или session storage. Так себе история." - то какой путь будет верный? Вообще подскажите, подход показанный в этом видеокурсе используется на практике для создания сайтов с активным обращением к БД, будь то магазин или блог? Я только познакомился с хранением данных в json для подобных задач и не понимаю - тут это сделано только для примера, на практике же нужно использовать другие технологии для связки, например, с mysql? Или же в реальном мире используется json? Если json это заплатка для курса, то подскажите пожалуйста стек правильных технологий для полноценного объемного сайта на Vue. Спасибо.
А зачем передавать между родителями и детьми, когда можно в детях подключить mapActions и mapGetters и сразу вызывать действия или гетеры. Какой смысл передавать родителю и у родителя вызывать действия??? Или передавать ребенку гетер, когда ребенок сам может получить геттер???
Доброго времени суток! Интересные уроки, спасибо. Вопрос по actions/mutations. При удалении товара из корзины вы пишете action DELETE_FROM_CART и комитите mutattion REMOVE_FROM_CART. Удаление товара происходит синхронно, почему тогда сразу не инициировать mutattion в компоненте v-cart? (Действия происходят в промежутке ~20:26 - 22:01)
[Vue warn]: Error in render: "Error: Cannot find module './undefined'" При клике на добавить карту вылетает ошибка и не могу ее решить,может кто подскажет
Не совсем понял, зачем мы именно в "v-main-wrapper" прописываем v-bind:cart_data="CART". Ведь это заставляет нас прописывать пропс cart_data в "v-cart" и потом еще пропс cart_item_data в "v-cart-item". Почему нельзя было как в случае с каталогом прописать это в файле "v-cart", и потом просто один пропс cart_data в его дочернем компоненте? Надеюсь нормально сформулировал вопрос) Заранее спасибо
Верно, но так как мы ставим условие на корзину через v-if в котором смотрим на геттер CART, то раз геттер уже используется в враппере, с помощью него и передадим в пропсы его самого. Можно сделать как и вы сказали. На самом деле дальше в уроках, когда мы подключим vue router, там вообще все изменится сильно:)
Ann Vinnik значит вы замыкаете бесконечный вызов какой то функции. Это не ошибка импорта. Что то в коде. Посмотреть бы код ваш. Напишите мне в телеграм @aboltnev
@@gofrontend2220 я нашла ошибку, я в двух файлах одновременно импортила корзину, поэтому получилось замыкание. Изначально начала писать код не в том файле и не почистила, вот и получилась ошибка. Спасибо большое что ответили. Очень хороший курс, все доступно и понятно) Надеюсь больше таких глупых ошибок не допущу.
Решил пройти эти уроки с 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 Добрый день, я тоже столкнулся с такой проблемой как у Вадима, добавление в db.json строки "quantity":0 не помогло, тоже сижу на третей версии Vue. Как можно решить эту проблему? Спасибо
при обновлении страницы все товары из корзины удаляются, у меня одного так или так и должно быть? и если так и должно быть, можно ли как нибудь на стороне фронтенда это исправить?
Alexander Shulgin на фронте нельзя. Фронт обнуляется при релоуде. Это стандартное поведение. Вы можете максимум в фейк апи сохранять корзину в базу либо хранить ее в local или session storage. Но это так то костыль
Все очень просто: если надо передать данные между родителем и ребенком или наоброт и эти данные испльзуются только в этом случае - зачем использовать vuex? Vuex - это для тех данных, которые могут быть использованы в нескольких компонентах, где передача этих данных пропсами затруднительна или неоптимальна
Убил часа 3 на 15:40
mounted() {
const cartItemData = this.cart_item_data;
cartItemData.quantity = 1;
,
Мулька в том чтобы переопределить переменную
Большое спасибо тебе, я тоже убил 3 часа сука на это. Я редко оставляю коммы, но тебе отдельное спасибо. Даже если не увидишь это, то всё равно спасибо)
Спасибо за решение!!👍
Спасибо тебе, я пол дня искал причину, потом только зашёл в комментарии
спасибо!
Ребята!
Не стоит мутировать пропсы как в 15:40.
В документации Vue про это написано, и сам Vue должен выкидывать warning в консоль про такое его использование.
Если мы хотим работать с какими-то данными в дочернем компоненте, то внутри него стоит использовать новую переменную, например определяемую там же в хуке жизненного цикла.
Мне кажется, вы ошиблись с таймлайном, вы наверное имели ввиду 25:40 время, а не 15:40
ну да, vue js очень быстро изменяется, я не успел отдохнуть, как узнал что некоторые функции были вообще вырезаны...
Ура! все работает, перехожу на шестой урок )
stas stas отлично!
Спасибо! Не сразу всё получается, но больше от невнимательности и быстрых переходов от одного компонента к другому.
Господи, какая же годнота
Спасибо за мощный урок!
Большое спасибо за ваши уроки, очень помогают разобраться с VUE/VUEX . Очень хотелось бы еще ваших уроков про VUE + Axios + VUEX, может какое то приложения c спорт статистикой подтянуть с бесплатного API.. в таком духе, в любом случае буду рад вашим новым урокам !)
отличный урок!
ну этот комментарий можно написать под последним видео.
Зачастую, подобные видео для новичков же?
Вот значит по всему плейлисту он сделал свое какое то приложение, даже смог его собрать (я про себя), а на хостинг-то как его грузить? вот на regru например?
как на хостинге запускать тот же json-server?
вот есть примеры не связанные с firebase и его аналогами?
а так и правда очень годно. спасибо.
Все отлично! Спасибо!
Нормально все так объясняется Спасибо
Да все супер! Очень интересно!
А можно новый ключ-значение с количеством добавлять просто в мутации перед записью в стэйт??
Доброго времени дня! Спасибо за контент! Такой вопрос, как быть если товары из массива json не пронумерованы так как во vuex, как их тогда удалять?
Жаль ,что бросили вести контент
заслуженный лайк, урок сложный.
Автор не торопитесь, и чуть побольше пояснений используемых решений, что и куда переходит, можно прям стрелочкой мышки показывать- и будет идеально:)
а так все без вопросов
Отличные видео! Нравится как вы излагаете мысль, ВОПРОС: "почему при обновлении страницы все обнуляется. как сохранить состояние приложения до момента отправки данных на сервер"? спасибо
borison2004 можно сохранять состояния в local или session storage. Но это так себе история.
@@gofrontend2220 Спасибо за уроки! Тоже волнует этот вопрос и по этому задам более развернутый, уточняющий:
Если " local или session storage. Так себе история." - то какой путь будет верный?
Вообще подскажите, подход показанный в этом видеокурсе используется на практике для создания сайтов с активным обращением к БД, будь то магазин или блог?
Я только познакомился с хранением данных в json для подобных задач и не понимаю - тут это сделано только для примера, на практике же нужно использовать другие технологии для связки, например, с mysql? Или же в реальном мире используется json?
Если json это заплатка для курса, то подскажите пожалуйста стек правильных технологий для полноценного объемного сайта на Vue.
Спасибо.
Montenote json server на бою не используется. Нужны бд и реальные апи. Но это уже бекенд тема. Я в ней не шарю
@@gofrontend2220 Спасибо
Почему нельзя было AddToCart вызвать из CartItem? Зачем в родителя прокидывать?
Возможно что бы не плодить mapGetters
А зачем передавать между родителями и детьми, когда можно в детях подключить mapActions и mapGetters и сразу вызывать действия или гетеры. Какой смысл передавать родителю и у родителя вызывать действия??? Или передавать ребенку гетер, когда ребенок сам может получить геттер???
Доброго времени суток! Интересные уроки, спасибо. Вопрос по actions/mutations. При удалении товара из корзины вы пишете action DELETE_FROM_CART и комитите mutattion REMOVE_FROM_CART. Удаление товара происходит синхронно, почему тогда сразу не инициировать mutattion в компоненте v-cart? (Действия происходят в промежутке ~20:26 - 22:01)
Almat Kambetov потому что, если параллельно будут возможные запросы - синхронность может испортить все. Лучше всегда писать через action
А как же легаси) Vue2 жив)
[Vue warn]: Error in render: "Error: Cannot find module './undefined'"
При клике на добавить карту вылетает ошибка и не могу ее решить,может кто подскажет
а я удалял через .filter по id
Не совсем понял, зачем мы именно в "v-main-wrapper" прописываем v-bind:cart_data="CART".
Ведь это заставляет нас прописывать пропс cart_data в "v-cart" и потом еще пропс cart_item_data в "v-cart-item".
Почему нельзя было как в случае с каталогом прописать это в файле "v-cart", и потом просто один пропс cart_data в его дочернем компоненте?
Надеюсь нормально сформулировал вопрос)
Заранее спасибо
Верно, но так как мы ставим условие на корзину через v-if в котором смотрим на геттер CART, то раз геттер уже используется в враппере, с помощью него и передадим в пропсы его самого. Можно сделать как и вы сказали. На самом деле дальше в уроках, когда мы подключим vue router, там вообще все изменится сильно:)
@@gofrontend2220 Понял, спасибо за быстрый ответ)
I have any error: Uncaught (in promise) TypeError: this.$set is not a function. Time: 15:20. How i can solve this error?
mounted() {
const cartItemData = reactive(this.cartItemData);
cartItemData.quantity = 1
}
@@yzums reactive is not defined
@@yzums
mounted() {
const cartItemData = this.cart_item_data;
cartItemData.quantity = 1;
,
А как через post axios отправлять артикул товара на бэк?
Появилась ошибка Uncaught RangeError: Maximum call stack size exceeded при импорте корзины, не могу понять как ее пофиксить.
Ann Vinnik значит вы замыкаете бесконечный вызов какой то функции. Это не ошибка импорта. Что то в коде. Посмотреть бы код ваш. Напишите мне в телеграм @aboltnev
@@gofrontend2220 я нашла ошибку, я в двух файлах одновременно импортила корзину, поэтому получилось замыкание. Изначально начала писать код не в том файле и не почистила, вот и получилась ошибка. Спасибо большое что ответили. Очень хороший курс, все доступно и понятно) Надеюсь больше таких глупых ошибок не допущу.
Ann Vinnik ошибки не глупые. Ошибки дают вам опыт:)
Такая-же ошибка также минут 30 долбался
Как же много действий, чтобы заработала кнопка удаления... Изменение кол-ва товаров в самой корзине рассматривается через +- ?
Андрей Мещеряков :) да конечно. В следующем уроке, когда перенесем корзину на другой url
базу данных на джейсоне постоянно надо развертывать?
Решил пройти эти уроки с 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
С vue 3 работать не будет. Можете даже не пытаться. На момент записи был только v2
@@gofrontend2220 Добрый день, я тоже столкнулся с такой проблемой как у Вадима, добавление в db.json строки "quantity":0 не помогло, тоже сижу на третей версии Vue. Как можно решить эту проблему? Спасибо
@@reustick this.$store.dispatch('addToCart', {...this.product, quantity: this.quantity})
А вот так?
mounted() {
this.cart_item_data.quantity= 1;
},
@@malyan не, так тоже не работает
Четко
Удаление с slice(index, 1) не с работало, помогло так:
var carts = state.cart
carts.splice(carts.indexOf(index), 1)
Newbios75 значит в аргумент index не то передаете
не slice, а splice
при обновлении страницы все товары из корзины удаляются, у меня одного так или так и должно быть? и если так и должно быть, можно ли как нибудь на стороне фронтенда это исправить?
Alexander Shulgin на фронте нельзя. Фронт обнуляется при релоуде. Это стандартное поведение. Вы можете максимум в фейк апи сохранять корзину в базу либо хранить ее в local или session storage. Но это так то костыль
@@gofrontend2220 спасибо. Уже решил это на стороне бэкэнда, при помощи vue-session.
@@gofrontend2220 Уроки крутые, почти сразу становится понятно что Vue штука не страшная, как изначально казалось))
@@alexandershulgin958 может подскажете мне как вы решили эту проблему?
Почему при использовании vuex Вы все данные через пропсы постоянно гоняете, если можно написать геттеры и получать данные напрямую из стейта?
Все очень просто: если надо передать данные между родителем и ребенком или наоброт и эти данные испльзуются только в этом случае - зачем использовать vuex? Vuex - это для тех данных, которые могут быть использованы в нескольких компонентах, где передача этих данных пропсами затруднительна или неоптимальна
Go Frontend понял спасибо, а у Вас есть тг канал или что-то в этом роде, где можно вопросики позадавать?
11111 @aboltnev это телега моя. Туда задавайте
@@gofrontend2220 через vuex не так муторно это делать
quantity не маунтится😭😭😭
Ахах тоже тут застрял, е6учий Vue 2
Не рашили?
mounted() {
const cartItemData = this.cart_item_data;
cartItemData.quantity = 1;
,
👍
2:51 почему не использовать v-show?
Oleg Olegovich v-show скроет элемент, но по факту он будет на странице. Зачем лишний раз монтировать в дом дерево то, что не обязательно будет там?
у меня реактивность пропала прочему то
А разве это все не должно делаться на бэкенде?
Должно. Но я же не бекендер ) а показать или симитировать логику как-то надо
У меня если с конца удалять, то удаляются элементы наоборот)
пожалуйста не чмокай