summaryrefslogtreecommitdiffstats
path: root/src/utils/hooks/use-state-change.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils/hooks/use-state-change.tsx')
-rw-r--r--src/utils/hooks/use-state-change.tsx19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/utils/hooks/use-state-change.tsx b/src/utils/hooks/use-state-change.tsx
new file mode 100644
index 0000000..063fb8e
--- /dev/null
+++ b/src/utils/hooks/use-state-change.tsx
@@ -0,0 +1,19 @@
+import { useEffect, useState } from 'react';
+
+/**
+ * Use React useState hook and update it if initial data change.
+ *
+ * @param initial - The initial value.
+ * @returns The state and a setter.
+ */
+const useStateChange = <T,>(initial: T) => {
+ const [state, setState] = useState<T>(initial);
+
+ useEffect(() => {
+ setState(initial);
+ }, [initial]);
+
+ return [state, setState] as const;
+};
+
+export default useStateChange;