Skip to content

Commit 4dde035

Browse files
committed
[FIX]: #1529 Watch Local Storage Values
1 parent 4bcbc11 commit 4dde035

File tree

1 file changed

+30
-14
lines changed

1 file changed

+30
-14
lines changed

client/packages/lowcoder/src/comps/hooks/localStorageComp.ts

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,29 @@ const APP_STORE_NAMESPACE = "lowcoder_app_local_storage";
1313
const LocalStorageCompBase = withViewFn(
1414
simpleMultiComp({ values: stateComp<JSONObject>({}) }),
1515
(comp) => {
16-
const originStore = localStorage.getItem(APP_STORE_NAMESPACE) || "{}";
17-
let parseStore = {};
18-
try {
19-
parseStore = JSON.parse(originStore);
20-
} catch (e) {
21-
log.error("application local storage invalid");
22-
}
23-
16+
// add custom event listener to update values reactively
2417
useEffect(() => {
25-
const value = comp.children.values.value;
26-
if (!isEqual(value, parseStore)) {
27-
log.info(value, parseStore);
28-
comp.children.values.dispatchChangeValueAction(parseStore);
29-
}
30-
}, [parseStore]);
18+
const handler = () => {
19+
try {
20+
const raw = localStorage.getItem(APP_STORE_NAMESPACE) || "{}";
21+
const parsed = JSON.parse(raw);
22+
console.log("[LocalStorageComp] Custom event received:", parsed);
23+
comp.children.values.dispatchChangeValueAction(parsed);
24+
} catch (e) {
25+
log.error("Failed to parse localStorage:", e);
26+
}
27+
};
28+
29+
// Add listener on mount
30+
window.addEventListener("lowcoder-localstorage-updated", handler);
31+
32+
// Run once on mount to initialize
33+
handler();
34+
35+
return () => {
36+
window.removeEventListener("lowcoder-localstorage-updated", handler);
37+
};
38+
}, []);
3139

3240
return null;
3341
}
@@ -62,6 +70,8 @@ LocalStorageComp = withMethodExposing(LocalStorageComp, [
6270
parseStore[key] = value;
6371
localStorage.setItem(APP_STORE_NAMESPACE, JSON.stringify(parseStore));
6472
comp.children.values.dispatchChangeValueAction(parseStore);
73+
74+
window.dispatchEvent(new CustomEvent("lowcoder-localstorage-updated"));
6575
} catch (e) {
6676
localStorage.setItem(APP_STORE_NAMESPACE, "{}");
6777
}
@@ -83,6 +93,9 @@ LocalStorageComp = withMethodExposing(LocalStorageComp, [
8393
delete parseStore[key];
8494
localStorage.setItem(APP_STORE_NAMESPACE, JSON.stringify(parseStore));
8595
comp.children.values.dispatchChangeValueAction(parseStore);
96+
97+
// Trigger update
98+
window.dispatchEvent(new CustomEvent("lowcoder-localstorage-updated"));
8699
} catch (e) {
87100
localStorage.setItem(APP_STORE_NAMESPACE, "{}");
88101
}
@@ -98,6 +111,9 @@ LocalStorageComp = withMethodExposing(LocalStorageComp, [
98111
execute: (comp) => {
99112
localStorage.removeItem(APP_STORE_NAMESPACE);
100113
comp.children.values.dispatchChangeValueAction({});
114+
115+
// Trigger update
116+
window.dispatchEvent(new CustomEvent("lowcoder-localstorage-updated"));
101117
},
102118
},
103119
]);

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy