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

Очистка localStorage при первом запуске новой сборки (redux-persist)

06.12.2024, 09:21. Показов 585. Ответов 2

Студворк — интернет-сервис помощи студентам
Добрый день!
Пишу проект на js + react + redux + redux-persist.
Я задаю некоторые настройки по-умолчанию моего приложения в redux + redux-persist.
Столкнулся с такой штукой, что при деплое нового билда с новыми умолчаниями, у пользователей в браузерах все еще хранятся старые умолчания (видимо идет проверка есть ли storage для приложения и если есть, то новый не размещается чтобы не снести личные настройки видимо, а у новых пользователей с "чистыми" браузерами размещается).
Думаю, я не первый столкнулся с такой проблемой, и она выглядит так, будто по ней должно быть придумано красивое решение, но решения не могу найти, почему-то.
Мне нужно очищать локальное хранилище перед первым запуском новой сборки...

Конфигурация стора выглядит так(на всякий случай):
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import { configureStore, combineReducers } from '@reduxjs/toolkit'
 
import { 
    persistStore, 
    persistReducer,
    FLUSH,
    REHYDRATE,
    PAUSE,
    PERSIST,
    PURGE,
    REGISTER,
} from 'redux-persist'
import storage from 'redux-persist/lib/storage' // defaults to localStorage for web
 
import dataReducer from './dataSlice'
import intervalValueReducer from './intervalValueSlice'
import dialogsReducer from './dialogsSlice'
import overlaysReducer from './overlaysSlice'
import overlaysOrderReducer from './overlaysOrderSlice'
import tablesReducer from './tablesSlice'
import mapVisualReducer from './mapVisualSlice'
import searchLayerReducer from './searchLayerSlice'
 
const rootReducer = combineReducers({
    data: dataReducer,
    intervalValue: intervalValueReducer,
    dialogs: dialogsReducer,
    overlays: overlaysReducer,
    overlaysOrder: overlaysOrderReducer,
    tables: tablesReducer,
    mapVisual: mapVisualReducer,
    searchLayer: searchLayerReducer
})
 
const persistConfig = {
    key: 'root',
    storage: storage,
    whitelist: ['data', 'intervalValue', 'overlays',  'mapVisual' ]
}
 
const persistedReducer = persistReducer(persistConfig, rootReducer)
 
const store = configureStore({
    reducer: persistedReducer,
    middleware: (getDefaultMiddleware) =>
        getDefaultMiddleware({
            serializableCheck: false/*{
                ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER],
            }*/,
            immutableCheck: false,
 
        }),
}) 
 
export const persistor = persistStore(store)
export default store
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.12.2024, 09:21
Ответы с готовыми решениями:

LocalStorage работает только при первом запуске и в одной вкладке
Здравствуйте. Столкнулся с проблемой,что localStorage на localHost`e работает только в одной вкладке, которая открылась после npm start в...

Что надо сделать, чтобы при запуске программы и при первом запуске SaveDialog открывался заданный по умолчанию каталог?
Здравствуйте ВСЕ ! Проблема следующая. 1) При первом запуске SaveDialog открывается каталог с файлами. 2) Изменяешь каталог,...

Стал сильно нагреваться блок питания но только при первом запуске и вырубает комп , при втором запуске работает норм
поставил новую видюху Geforce GTX 560 ti и стал сильно нагреваться блок питания но только при первом запуске и вырубает комп , при втором...

2
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3832 / 1667 / 431
Регистрация: 14.03.2022
Сообщений: 4,201
06.12.2024, 09:59
Цитата Сообщение от WhiteRing Посмотреть сообщение
она выглядит так, будто по ней должно быть придумано красивое решение
Как вариант - храни все в ключе с идентификатором версии...
Т.о. какие бы данные небыли записаны, если нет данных в ключе текущей версии - их можно будет записать.
1
1 / 1 / 0
Регистрация: 18.06.2020
Сообщений: 41
09.12.2024, 17:03  [ТС]
krvsa, спасибо, нужно будет подумать об этом варианте...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.12.2024, 17:03
Помогаю со студенческими работами здесь

Почему мой код при первом запуске делает с файлом то что от него требуют, но при повторном запуске стирает файл?
Цель такова: имеем например такую строку Василий|||Сидоров||не указано Из нее нужно получить строчку в формате Василий|Сидоров|не...

LocalStorage для корзины товаров (React/Redux)
Привет! Стоит задача, чтобы после перезагрузки данные корзины покупок оставались. Я пытаюсь это прикрутить через LocalStoge и Redux. ...

При первом включении компьютера после сборки черный экран
После сборки игрового компа при подключении к монитору\телевизору "появляется" черный экран. Все части компа подходят друг к другу,...

Форма при первом запуске
Нужно сделать так, чтобы при самом первом запуске показалась первая форма. Все остальные запуски - это форма никогда бы не появлялась

Тормозит пк при первом запуске
Пк тормозит при первом запуске замечаю уменьшение фпс в играх, но после перезагрузки, всё в норме (железо GTX 1660super Ryzen 5 2600)...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
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