169 похожих чатов

Подскажите пожалуйста, очищаю sessionStorage после перехода на другую страницу useEffect(() =>

{
window.onbeforeunload = () => {
sessionStorage.clear();
};
}, []);
но оно также очищает если перезагрузить страницу, пробовал и через window.onpagehide
как сделать чтобы очищало только при переходе на другую страницу, а после перезагрузки данные оставались?
спасибо

10 ответов

18 просмотров

Обновление страницы это тоже самое что закрыть страницу и потом открыть туже самую страницу.

Eugene-Stepanyuk Автор вопроса
Denis Deniskov
Обновление страницы это тоже самое что закрыть стр...

тоесть localStorage в таком случае использовать?

Eugene-Stepanyuk Автор вопроса
Denis Deniskov
Обновление страницы это тоже самое что закрыть стр...

хотя если я уберу этот useEffect, то данные остаются в sessionStorage после перезагрузки

Eugene Stepanyuk
тоесть localStorage в таком случае использовать?

Ну по идее можно и sessionStorage, он привязывается ко вкладке и при обновлении страницы не должен сбрасываться

Eugene Stepanyuk
хотя если я уберу этот useEffect, то данные остают...

Ты бы лучше сказал что ты пытаешься сделать и зачем, зачем тебе вообще отслеживать обновление страницы

Eugene-Stepanyuk Автор вопроса
Denis Deniskov
Ты бы лучше сказал что ты пытаешься сделать и заче...

я храню в sessionStorage индекс выделенной строки и ее данные из таблицы, чтобы после перезагрузки страницы строка оставалась выделенной и данные все еще были получены, иначе все сбрасывается после перезагрузки, но когда перехожу на другую страницу, хочу очищать хранилище

Eugene Stepanyuk
я храню в sessionStorage индекс выделенной строки ...

А откуда ты эту строку берешь изначально?

Eugene-Stepanyuk Автор вопроса
Denis Deniskov
А откуда ты эту строку берешь изначально?

const [rowData, setRowData] = useState<DataType | undefined>( JSON.parse(sessionStorage.getItem("row_data") || "{}") ); const [selectedRow, setSelectedRow] = useState<number | undefined>( Number(sessionStorage.getItem("selected_row")) || undefined ); const onClickRow = (record: any) => { setRowData(record); sessionStorage.setItem("row_data", JSON.stringify(record)); }; <Table columns={useTableColumns} dataSource={dataTable} onRow={(record, index) => ({ onClick: () => { onClickRow(record); if (index !== undefined) { const pageSize = 10; const rowIndex = (currentPage - 1) * pageSize + (index as number); setSelectedRow(rowIndex); sessionStorage.setItem("selected_row", index.toString()); } }, })} rowClassName={(_record, index) => { const pageSize = 10; const currentPageIndex = (currentPage - 1) * pageSize + index; return currentPageIndex === selectedRow ? styles["selected-row"] : ""; }} />

Eugene Stepanyuk
const [rowData, setRowData] = useState<DataType | ...

Ну ты например можешь сделать useEffect, в нем запоминать текуший урл страницы, и проверять его, если он не совпадает, то чистить сторадж например useEffect(()=>{ const url = sessionStorage.getItem('url') sessionStorage.setItem('url', текущий урл) if(url && url !== текущий_урл ){ sessionStorage.removeItem('selected_row') } } Примерно так

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта