Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | import { useState } from "react";
import { useHistory } from "react-router-dom";
export const useHistoryState = <T>(
key: string,
initialValue: T
): [T, (t: T) => void] => {
const history = useHistory();
const [rawState, rawSetState] = useState<T>(() => {
const value = (history.location.state as any)?.[key];
return value ?? initialValue;
});
const setState = (value: T) => {
history.replace({
...history.location,
state: {
...(history.location.state as any),
[key]: value,
},
});
rawSetState(value);
};
return [rawState, setState];
};
|