hooks-me
Version:
<div align="center"> <h1>hooks-me</h1> <div>React useful hooks.</div>
33 lines (32 loc) • 1.09 kB
JavaScript
import { useCallback, useState, useEffect } from "react";
export var useLocalStorage = function (key, defaultValue) {
return useStorage(key, defaultValue, window.localStorage);
};
export var useSessionStorage = function (key, defaultValue) {
return useStorage(key, defaultValue, window.sessionStorage);
};
var useStorage = function (key, defaultValue, storageObject) {
var _a = useState(function () {
var jsonValue = storageObject.getItem(key);
if (jsonValue != null) {
try {
return JSON.parse(jsonValue);
}
catch (_a) {
return jsonValue;
}
}
return defaultValue;
}), value = _a[0], setValue = _a[1];
useEffect(function () {
if (!value) {
return storageObject.removeItem(key);
}
storageObject.setItem(key, JSON.stringify(value));
}, [key, value, storageObject]);
var remove = useCallback(function () {
setValue(undefined);
}, []);
return [value, setValue, remove];
};
export default useStorage;