1
- import { Fragment , useState , useEffect } from 'react' ;
1
+ import { Fragment , useState , useMemo } from 'react' ;
2
2
import { JsonForms } from '@jsonforms/react' ;
3
3
import Grid from '@mui/material/Grid' ;
4
4
import Button from '@mui/material/Button' ;
@@ -57,15 +57,11 @@ const renderers = [
57
57
58
58
const App = ( ) => {
59
59
const classes = useStyles ( ) ;
60
- const [ displayDataAsString , setDisplayDataAsString ] = useState ( '' ) ;
61
- const [ jsonformsData , setJsonformsData ] = useState < any > ( initialData ) ;
62
-
63
- useEffect ( ( ) => {
64
- setDisplayDataAsString ( JSON . stringify ( jsonformsData , null , 2 ) ) ;
65
- } , [ jsonformsData ] ) ;
60
+ const [ data , setData ] = useState < any > ( initialData ) ;
61
+ const stringifiedData = useMemo ( ( ) => JSON . stringify ( data , null , 2 ) , [ data ] ) ;
66
62
67
63
const clearData = ( ) => {
68
- setJsonformsData ( { } ) ;
64
+ setData ( { } ) ;
69
65
} ;
70
66
71
67
return (
@@ -89,7 +85,7 @@ const App = () => {
89
85
Bound data
90
86
</ Typography >
91
87
< div className = { classes . dataContent } >
92
- < pre id = 'boundData' > { displayDataAsString } </ pre >
88
+ < pre id = 'boundData' > { stringifiedData } </ pre >
93
89
</ div >
94
90
< Button
95
91
className = { classes . resetButton }
@@ -108,10 +104,10 @@ const App = () => {
108
104
< JsonForms
109
105
schema = { schema }
110
106
uischema = { uischema }
111
- data = { jsonformsData }
107
+ data = { data }
112
108
renderers = { renderers }
113
109
cells = { materialCells }
114
- onChange = { ( { errors, data } ) => setJsonformsData ( data ) }
110
+ onChange = { ( { errors, data } ) => setData ( data ) }
115
111
/>
116
112
</ div >
117
113
</ Grid >
0 commit comments