opendash
Version:
open.DASH data visualization framework
28 lines • 1.14 kB
JavaScript
import * as React from "react";
import { useEventListener } from "..";
export function useLocalStorage(key, initialValue) {
var _a = React.useState(function () {
try {
var item = window.localStorage.getItem(key);
return item ? JSON.parse(item) : initialValue;
}
catch (error) {
console.error(error);
return initialValue;
}
}), storedValue = _a[0], setStoredValue = _a[1];
useEventListener("storage", function (_a) {
var k = _a.key, newValue = _a.newValue;
if (k === key && JSON.stringify(storedValue) !== newValue) {
setStoredValue(JSON.parse(newValue));
}
});
var setValue = function (value) {
var newValue = value instanceof Function ? value(storedValue) : value;
setStoredValue(newValue);
window.localStorage.setItem(key, JSON.stringify(newValue));
window.dispatchEvent(new StorageEvent("storage", { key: key, newValue: JSON.stringify(newValue) }));
};
return [storedValue, setValue];
}
//# sourceMappingURL=useLocalStorage.js.map