فهرست منبع

Membership hooks - add isSubscribed

Leszek Wiesner 4 سال پیش
والد
کامیت
ddfd946deb
2فایلهای تغییر یافته به همراه11 افزوده شده و 3 حذف شده
  1. 5 1
      packages/joy-utils/src/MemberByAccountPreview.tsx
  2. 6 2
      packages/joy-utils/src/MembersDropdown.tsx

+ 5 - 1
packages/joy-utils/src/MemberByAccountPreview.tsx

@@ -18,7 +18,11 @@ const MemberByAccountPreview: React.FunctionComponent<Props> = ({ accountId }) =
   const { api } = useContext(ApiContext);
   const [ member, setMember ] = useState(null as MemberFromAccount | null);
   useEffect(
-    () => { memberFromAccount(api, accountId).then(member => setMember(member)); },
+    () => {
+      let isSubscribed = true;
+      memberFromAccount(api, accountId).then(member => isSubscribed && setMember(member));
+      return () => { isSubscribed = false; };
+    },
     [accountId]
   );
 

+ 6 - 2
packages/joy-utils/src/MembersDropdown.tsx

@@ -39,12 +39,16 @@ const MembersDropdown: React.FunctionComponent<Props> = ({ accounts, ...passedPr
   const [ membersOptions, setMembersOptions ] = useState([] as DropdownItemProps[]);
   // Generate members options array on load
   useEffect(() => {
+    let isSubscribed = true;
     Promise
       .all(accounts.map(acc => memberFromAccount(api, acc)))
       .then(members => {
-        setMembersOptions(membersToOptions(members));
-        setLoading(false);
+        if (isSubscribed) {
+          setMembersOptions(membersToOptions(members));
+          setLoading(false);
+        }
       });
+    return () => { isSubscribed = false; };
   }, [accounts]);
 
   return (