dimakrugly / onix

1 stars 0 forks source link

DragAndDrop #34

Closed DmitriiMelnikOnix closed 1 year ago

DmitriiMelnikOnix commented 1 year ago

Якщо додавати елементи в кошик в випадковому порядку, то після першого перетаскування елементи відсортируються

https://user-images.githubusercontent.com/59687966/224862633-217e453d-f44b-4cf6-924a-c82ae9c0bdb1.mov

DmitriiMelnikOnix commented 1 year ago

Те ж саме відбувається якщо спочатку відсортувати, а потім пробувати перетаскувати елементи

dimakrugly commented 1 year ago

Сам собі ускладнив життя, але пофікшено досить легко. Тепер функції сортування перепризначають властивість order для об'єктів.

onCartLowerSort = () => { let i = 1; this.setState((prev) => ({ cartData: [...prev.cartData] .sort((el, item) => el.productData.price - item.productData.price) .reduce((acc, item) => { item = { ...item, order: i }; acc.push(item); i += 1; return acc; }, []), })); };

При додаванні ітемів до корзини тепер order призначається по факту додавання ітему

onCartAdd = (item) => { const { cartData } = this.state; const sortOrder = cartData.length + 1; this.setState((prev) => ({ cartData: [ ...prev.cartData, { key: item.key, id: item.key, order: sortOrder, active: false, productData: { title: item.title, image: item.image, price: item.price, }, }, ], })); };

Дякую, ще раз підтвердилася важливість тестування