From bd833987e508f45b067b5bca40e14ae87199bc89 Mon Sep 17 00:00:00 2001 From: Emrie Date: Fri, 14 Apr 2023 00:24:48 -0400 Subject: [PATCH] added custom hooks --- frontend/App.js | 5 ++++- hooks/useDarkMode.js | 9 +++++++++ hooks/useLocalStorage.js | 20 ++++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 hooks/useDarkMode.js create mode 100644 hooks/useLocalStorage.js diff --git a/frontend/App.js b/frontend/App.js index 93ae8648..6ff8045c 100644 --- a/frontend/App.js +++ b/frontend/App.js @@ -4,9 +4,12 @@ import axios from "axios"; import Charts from "./components/Charts"; import Navbar from "./components/Navbar"; +import { useDarkMode } from "../hooks/useDarkMode"; + + const App = () => { const [coinData, setCoinData] = useState([]); - const [darkMode, setDarkMode] = useState(false); + const [darkMode, setDarkMode] = useDarkMode(false); useEffect(() => { axios diff --git a/hooks/useDarkMode.js b/hooks/useDarkMode.js new file mode 100644 index 00000000..7d4c1df6 --- /dev/null +++ b/hooks/useDarkMode.js @@ -0,0 +1,9 @@ +import React from "react"; +import { useState } from "react"; +import { useLocalStorage } from "./useLocalStorage"; + +export const useDarkMode = (key, initialvalue) => { + const [darkmode, setdarkmode ] = useLocalStorage("darkMode", initialvalue) + + return [darkmode, setdarkmode] +} \ No newline at end of file diff --git a/hooks/useLocalStorage.js b/hooks/useLocalStorage.js new file mode 100644 index 00000000..b65091f4 --- /dev/null +++ b/hooks/useLocalStorage.js @@ -0,0 +1,20 @@ +import React from "react"; +import { useState } from "react"; + +export const useLocalStorage = (key, initialvalue) => { +const [state, setState] = useState(() =>{ +if (window.localStorage.getItem(key)) { + setState(JSON.parse(localStorage.getItem(key))) +} +localStorage.getItem(key, JSON.stringify(initialvalue)); +return initialvalue; +}) + +const setStoredState = (value) => { + localStorage.setItem(key, JSON.stringify(value)); + setState(value) +} + +return ([state, setStoredState]) + +} \ No newline at end of file