aboutsummaryrefslogtreecommitdiff
path: root/src/hooks/useLocalStorage.ts
diff options
context:
space:
mode:
authorEugene Sokolov <eug-vs@keemail.me>2020-08-10 13:51:11 +0300
committerGitHub <noreply@github.com>2020-08-10 13:51:11 +0300
commit823c82383424616bc7c2562e2a763321edb6050c (patch)
tree1d5220d68ab8ebb392c87038f2fc24cc72b28775 /src/hooks/useLocalStorage.ts
parent70d20b76f042a519e8e164279dfa31b5ce027d44 (diff)
parent78218c0f3427ad79de003ac59cffb99b08f0ae7d (diff)
downloadwhich-ui-823c82383424616bc7c2562e2a763321edb6050c.tar.gz
Merge pull request #74 from which-ecosystem/fetching
SWR feat. crazy refactor
Diffstat (limited to 'src/hooks/useLocalStorage.ts')
-rw-r--r--src/hooks/useLocalStorage.ts16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/hooks/useLocalStorage.ts b/src/hooks/useLocalStorage.ts
new file mode 100644
index 0000000..faf1411
--- /dev/null
+++ b/src/hooks/useLocalStorage.ts
@@ -0,0 +1,16 @@
+import { useState, useCallback } from 'react';
+
+type Value = string | null;
+type Setter = (value: Value) => void;
+
+export default (key: string): [Value, Setter] => {
+ const [state, setState] = useState<Value>(() => localStorage.getItem(key) || null);
+
+ const update: Setter = useCallback(value => {
+ if (value) localStorage.setItem(key, value);
+ else localStorage.removeItem(key);
+ setState(value);
+ }, [key]);
+
+ return [state, update];
+};