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

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

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

10 ответов

23 просмотра

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

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') } } Примерно так

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
15
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта