Форум программистов, компьютерный форум, киберфорум
React/ReactJS
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 07.11.2017
Сообщений: 121

Пререрисовка таблицы после изменения состояния

21.12.2020, 06:14. Показов 1509. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Есть таблица, в которой есть данные о товаре, которые хранятся в localStorage. При нажатии на крестик происходит удаление, массив в localStorage уменьшается, но перерисовки не происходит, т.е. отображаются элементы, которых уже не существует. Как сделать так, чтобы после каждого удаления элемента таблица перерисовывалась?
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
let cartArray = JSON.parse(localStorage.getItem("cart"))
    let cartArrayMap = cartArray.map(p => {
        let id = p['product-id']
        return <tr className='order-form__products items'>
                    <td className='input-product'><input name='product' type='text' value={p['product-name']} /></td>
                    <td className='input-weight'><input name='weight' type='text' value={p['product-weight']}/></td>
                    <td className='input-price'><input name='price' type='text' value={p['product-price']}/></td>
                    <td className='input-td-delete' onClick={() => {deleteProduct(id)}}><img src='assets/close.svg'/></td>
                </tr>
    })
    let deleteProduct = (id) => {
        let cart = JSON.parse(localStorage.getItem("cart"))
        let cartFiltered = cart.filter(item => item['product-id'] !== id)
        localStorage.setItem('cart', JSON.stringify(cartFiltered))
        let cartNew = JSON.parse(localStorage.getItem("cart"))
    }
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
return ( 
         ..........
        <table id='rty' className='order-form__cart-table'>
               <tr className='main-row'>
                        <td><p>Товар</p></td>
                         <td className='td-weight'><p>Вес</p></td>
                         <td><p>Цена</p></td>
                         <td className='input-td-delete'></td>
                  </tr>
                  {cartArrayMap}
           </table>
                 ........   
    )
Миниатюры
Пререрисовка таблицы после изменения состояния  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.12.2020, 06:14
Ответы с готовыми решениями:

Внести изменения в DataSet после выборки из таблицы
Допустим имеем заполненную таблицу DataSet`а через селект-запрос. Можно ли изменить как-то изменить (переприсвоить) данные, или добавить,...

Событие после изменения ширины колонки таблицы
Всем привет! Есть таблица TStringGrid со включенным goColSizing. Нужно изменить ширину таблицы после изменения ширины колонки. Хотел...

Обновление DataSet после изменения структуры таблицы
Доброго времени суток. В приложении работа с базой данных Access идёт через DataSet. Пришлось добавить новую колонку в таблицу уже после...

3
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
21.12.2020, 09:40
Limongrass, при инициализации компонента загружаете данные из localStorage в стейт, если стейт меняется сохраняете его в localStorage.
0
0 / 0 / 0
Регистрация: 07.11.2017
Сообщений: 121
22.12.2020, 05:01  [ТС]
shvyrevvg, не могли бы вы написать как это сделать и объяснить подробнее?
0
27 / 22 / 6
Регистрация: 13.12.2012
Сообщений: 159
22.12.2020, 09:16
Limongrass, Реакт перерендеривает компонент в двух случаях - 1) изменилось состояние этого компонента (state) 2) изменились пропс. В данном случае ни то ни другое не поменялось. С чего бы происходить "перерисовке"?

Работай со стейтом компонента. При инициализации компонента забирайся из локалсторадж и добавления/удаления проводи в стейте, на что твой компонент будет реагировать рендерами. По окончанию манипуляций сохраняйся обратно в локалсторадж.

Не по теме:

Какой-то рог изобилия объявлений let =) Ни к чему хорошему это не приведет. Ни в одной вышеприведенной строке кода использование объявления let не обосновано и не оправдано. Замените на const. Использование let - это невероятно исключительная ситуация.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.12.2020, 09:16
Помогаю со студенческими работами здесь

Можно ли восстановить файлы после изменения таблицы раздела жёсткого диска с MBR в GPT?
Можно ли восстановить файлы, после изменения таблицы раздела жёсткого диска с MBR в GPT? При установки Windows 10, Windows 10...

Отслеживание изменения состояния службы
7. Служба отслеживает изменения состояния (приостановка, запуск, остановка) заданной службы и фиксирует их в текстовом файле. - у меня вот...

БД для отслеживания изменения состояния друзей в Вк
Привет :3 Есть задача - следить за изменением состояния друзей в Вк(записывать кто выбыл, кого добавили). У меня, на данный момент,...

DataGridViewCheckBoxColumn событие изменения состояния ячейки
И так я создаю вот так столбец: DataGridViewColumn actual = new DataGridViewCheckBoxColumn(); actual.HeaderText =...

Проверка изменения состояния двух GPIO выводов из трех
Доброго времени суток! Делаю первые шаги в программировании МК, в частности с МК 1986ВЕ9х не могу сообразить как сделать проверку условия,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru