@@ -14,35 +14,39 @@ const LocalStorageCompBase = withViewFn(
14
14
simpleMultiComp ( { values : stateComp < JSONObject > ( { } ) } ) ,
15
15
( comp ) => {
16
16
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 ] ) ;
26
17
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 ) ) {
29
28
comp . children . values . dispatchChangeValueAction ( parseStore ) ;
30
- } catch ( e ) {
31
- log . error ( "Failed to parse localStorage:" , e ) ;
32
29
}
33
- } , [ parseStore , comp . children . values ] ) ;
30
+ } , [ parseStore ] ) ;
34
31
35
32
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
+ } ;
38
42
39
- // Run once on mount to initialize
40
- handleStorageUpdate ( ) ;
43
+ // Add listener on mount
44
+ window . addEventListener ( "lowcoder-localstorage-updated" , handler ) ;
41
45
42
46
return ( ) => {
43
- window . removeEventListener ( "lowcoder-localstorage-updated" , handleStorageUpdate ) ;
47
+ window . removeEventListener ( "lowcoder-localstorage-updated" , handler ) ;
44
48
} ;
45
- } , [ handleStorageUpdate ] ) ;
49
+ } , [ ] ) ;
46
50
47
51
return null ;
48
52
}
0 commit comments