@@ -13,21 +13,29 @@ const APP_STORE_NAMESPACE = "lowcoder_app_local_storage";
1313const 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