Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (8)

Лучшие ответы пользователя

Все ответы (2)
  • Как изменить код, чтобы на клике кнопки "Так" в модальном окне добавлялся товар, по которому сделан клик?

    @omyraucy
    Почему бы тебе не попробовать функциональные компоненты React? Это во-первых.
    Во-вторых, попробуй функцию добавления товара сделать немного по-другому.
    Пример:
    У тебя есть state.
    const state = { cart: [], orders: [], modal: {} } // я буду писать, отталкиваясь от объектного React, чтобы было удобнее читать, но если будут ошибки - сори.
    
    /*
    cart - массив с корзиной. В ней хранятся все товары.
    orders - массив товаров в ассортименте.
    */


    Зададим примерную структуру товара:
    В товаре будут следующие поля: id, title (название), description (описание), price (цена), pic (изображение).
    Теперь выводим товар. Завернем его в некий div.
    Распаковываем массив orders.
    { this.state.orders.map((ord, index) => <div onClick={setState(modal = ord)} key={index} className="order">/*тут распихиваешь другие поля (id, price и т.д.)*/</div>)}

    Мы присвоили в modal объект order. Теперь просто пропишем условие, что modal будет появляться только тогда, когда он не равен пустому объекту.

    { Object.keys(modal) > 0 && <Modal data={modal} /> }


    Смотрим, является ли объект пустым. Если да, то ничего не делаем. Если нет, то отображаем модальное окно.

    Резюмируем: в state добавляем массив с товарами. Его потом перебираем через map и при клике меняем состояние modal с пустого объекта на элемент массива товара. Если клик не произошел, то модальное окно отображаться не будет.

    Если надо сделать кнопку закрытия модального окна, то при нажатии кнопки можно просто сделать изменение состояние modal на пустой объект и оно будет закрываться.
    Ответ написан
    Комментировать