Эх сурвалжийг харах

Implementing useObservable hook

Kirk Trombley 5 жил өмнө
parent
commit
c73b12497f
1 өөрчлөгдсөн 8 нэмэгдсэн , 2 устгасан
  1. 8 2
      client/src/store.js

+ 8 - 2
client/src/store.js

@@ -1,3 +1,5 @@
+import { useState, useEffect } from "react";
+
 const createObservable = initial => {
   let _val = initial;
   let _listeners = [];
@@ -22,10 +24,14 @@ const createObservable = initial => {
 
 const nameToHookName = name => "use" + name.chatAt(0).toUpperCase() + name.slice(1);
 
+const shallowEq = (x, y) => x === y;
+
 const createHook = obs => {
   // allow linters to pick this up as a hook
-  const useObservable = () => {
-    // TODO
+  const useObservable = (equality = shallowEq) => {
+    const [val, setVal] = useState(obs._get());
+    useEffect(() => obs._sub(setVal, equality), [equality]);
+    return val;
   }
   return useObservable;
 }