Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 在react中检测刷新事件_Reactjs_Refresh_Redux - Fatal编程技术网

Reactjs 在react中检测刷新事件

Reactjs 在react中检测刷新事件,reactjs,refresh,redux,Reactjs,Refresh,Redux,我目前正在将react redux与向导窗体一起使用。我现在遇到了这样一个问题:我需要将数据持久化到表单中,或者只是刷新数据,但要让用户知道 目前,所有内容都存储在多个redux状态中 有没有一种方法可以检测用户的“刷新”事件?我很可能会使用本地存储,但我对第一种方法很好奇,并想知道它是否可行 如果要检测刷新事件,它与React无关,请改用名为window.onbeforeunload的普通Javascript事件处理程序 window.onbeforeunload = (e) => {

我目前正在将react redux与向导窗体一起使用。我现在遇到了这样一个问题:我需要将数据持久化到表单中,或者只是刷新数据,但要让用户知道

目前,所有内容都存储在多个redux状态中


有没有一种方法可以检测用户的“刷新”事件?我很可能会使用本地存储,但我对第一种方法很好奇,并想知道它是否可行

如果要检测刷新事件,它与React无关,请改用名为
window.onbeforeunload的普通Javascript事件处理程序

window.onbeforeunload = (e) => {
// I'm about to refresh! do something...
};
但是,我认为这不是存储Redux store的正确方法,相反,您可以执行以下操作:

// 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.
});

如何使用loadStore?