Skip to content

Commit fafab63

Browse files
fixed localstorage issues on accessing it after navigation to other app
1 parent b84dd48 commit fafab63

File tree

1 file changed

+24
-20
lines changed

1 file changed

+24
-20
lines changed

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

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -14,35 +14,39 @@ const LocalStorageCompBase = withViewFn(
1414
simpleMultiComp({ values: stateComp<JSONObject>({}) }),
1515
(comp) => {
1616
const originStore = localStorage.getItem(APP_STORE_NAMESPACE) || "{}";
17-
18-
const parseStore = useMemo(() => {
19-
try {
20-
return JSON.parse(originStore);
21-
} catch (e) {
22-
log.error("application local storage invalid");
23-
return {};
24-
}
25-
}, [originStore]);
2617

27-
const handleStorageUpdate = useCallback(() => {
28-
try {
18+
let parseStore = {};
19+
try {
20+
parseStore = JSON.parse(originStore);
21+
} catch (e) {
22+
log.error("application local storage invalid");
23+
}
24+
25+
useEffect(() => {
26+
const value = comp.children.values.value;
27+
if (!isEqual(value, parseStore)) {
2928
comp.children.values.dispatchChangeValueAction(parseStore);
30-
} catch (e) {
31-
log.error("Failed to parse localStorage:", e);
3229
}
33-
}, [parseStore, comp.children.values]);
30+
}, [parseStore]);
3431

3532
useEffect(() => {
36-
// Add listener on mount
37-
window.addEventListener("lowcoder-localstorage-updated", handleStorageUpdate);
33+
const handler = () => {
34+
try {
35+
const raw = localStorage.getItem(APP_STORE_NAMESPACE) || "{}";
36+
const parsed = JSON.parse(raw);
37+
comp.children.values.dispatchChangeValueAction(parsed);
38+
} catch (e) {
39+
log.error("Failed to parse localStorage:", e);
40+
}
41+
};
3842

39-
// Run once on mount to initialize
40-
handleStorageUpdate();
43+
// Add listener on mount
44+
window.addEventListener("lowcoder-localstorage-updated", handler);
4145

4246
return () => {
43-
window.removeEventListener("lowcoder-localstorage-updated", handleStorageUpdate);
47+
window.removeEventListener("lowcoder-localstorage-updated", handler);
4448
};
45-
}, [handleStorageUpdate]);
49+
}, []);
4650

4751
return null;
4852
}

0 commit comments

Comments
 (0)