задание к седьмому занятию - #5
Conversation
| ], | ||
|
|
||
|
|
||
| Init() { |
There was a problem hiding this comment.
не хватает параметра cart и соответственно передачи в него ссылки на корзину
| this.catalogListBlock.addEventListener('click', event => this.addToCart(event)) | ||
| }, | ||
|
|
||
| addToCart(event) { |
There was a problem hiding this comment.
Метод жутко перегружен различной императивной логикой. Нужно декомпозировать логику и сделать ее более декларативной, дабы повысить читабельность и масштабируемость кода.
| const addProduct = this.items.find((item) => item.id_product == product); | ||
| if (this.cart.units.length == 0) { | ||
| addProduct.quantity = 1; | ||
| this.cart.units.push(addProduct); |
There was a problem hiding this comment.
не рекомендуется напрямую влиять на данные в другой сущности. Вместо этого, нужно вызывать метод добавления товара в корзину у самой корзины и передавать в него информацию о товаре
| this.cart.units.forEach(unit => { totalPrice += unit.quantity * unit.price }); | ||
| let total = 0; | ||
| this.cart.units.forEach(unit => { total += unit.quantity }); | ||
| cart.init(total, totalPrice); |
There was a problem hiding this comment.
корзина должна инициализироваться отдельно от каталога.
There was a problem hiding this comment.
обновлением состояния при добавлении товара должна заниматься корзина
| let totalPrice = 0; | ||
| this.cart.units.forEach(unit => { totalPrice += unit.quantity * unit.price }); | ||
| let total = 0; | ||
| this.cart.units.forEach(unit => { total += unit.quantity }); |
доделал таки подсчет корзины