{
window.onbeforeunload = () => {
sessionStorage.clear();
};
}, []);
но оно также очищает если перезагрузить страницу, пробовал и через window.onpagehide
как сделать чтобы очищало только при переходе на другую страницу, а после перезагрузки данные оставались?
спасибо
Обновление страницы это тоже самое что закрыть страницу и потом открыть туже самую страницу.
тоесть localStorage в таком случае использовать?
хотя если я уберу этот useEffect, то данные остаются в sessionStorage после перезагрузки
Ну по идее можно и sessionStorage, он привязывается ко вкладке и при обновлении страницы не должен сбрасываться
Ты бы лучше сказал что ты пытаешься сделать и зачем, зачем тебе вообще отслеживать обновление страницы
я храню в sessionStorage индекс выделенной строки и ее данные из таблицы, чтобы после перезагрузки страницы строка оставалась выделенной и данные все еще были получены, иначе все сбрасывается после перезагрузки, но когда перехожу на другую страницу, хочу очищать хранилище
А откуда ты эту строку берешь изначально?
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"] : ""; }} />
Ну ты например можешь сделать useEffect, в нем запоминать текуший урл страницы, и проверять его, если он не совпадает, то чистить сторадж например useEffect(()=>{ const url = sessionStorage.getItem('url') sessionStorage.setItem('url', текущий урл) if(url && url !== текущий_урл ){ sessionStorage.removeItem('selected_row') } } Примерно так
спасибо, так работает)
Обсуждают сегодня