@@ -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