在反应中检测刷新事件

los*_*193 3 refresh reactjs redux

我目前正在使用带有向导表单的 react redux。我现在遇到了一个问题,我需要将数据保存在表单中,或者只是刷新数据但让用户知道。

目前一切都存储在多个 redux 状态中。

有没有办法检测用户的“刷新”事件?我很可能会使用本地存储,但我对第一个选项很好奇,想知道是否有可能。

Ila*_*nus 5

如果你想检测一个刷新事件,它与 React 无关,而是使用名为的普通 Javascript 事件处理程序 window.onbeforeunload

window.onbeforeunload = (e) => {
// I'm about to refresh! do something...
};
Run Code Online (Sandbox Code Playgroud)

但是,我认为这不是存储 Redux 存储的正确方法,您可以执行以下操作:

// load state from localStorage
const loadState = () => {
  try {
    const serializedState = localStorage.getItem('state');
     if (serializedState === null) {
       return undefined; // reducer will return Redux state, as localstorage is null.
     }
    return JSON.parse(serializedState);
  } catch (err) {
    return undefined;
  }
};

const saveToLocalStorage = (state) => {
  try {
    const serializedState = JSON.stringify(state);
    localStorage.setItem('state', serializedState);
  } catch (err) {
    // ignore error
  }
};

store.subscribe(() => {
  saveToLocalStorage(store.getState()); // save current state to localstorage.
});
Run Code Online (Sandbox Code Playgroud)