@@ -67,7 +67,7 @@ export interface FieldProps {
6767}
6868
6969export interface FieldState {
70- reset : boolean ;
70+ resetCount : number ;
7171}
7272
7373// We use Class instead of Hooks here since it will cost much code by using Hooks.
@@ -82,7 +82,7 @@ class Field extends React.Component<FieldProps, FieldState>
8282 } ;
8383
8484 public state = {
85- reset : false ,
85+ resetCount : 0 ,
8686 } ;
8787
8888 private cancelRegisterFunc : ( ) => void | null = null ;
@@ -151,17 +151,11 @@ class Field extends React.Component<FieldProps, FieldState>
151151 if ( this . destroy ) return ;
152152
153153 /**
154- * We update `reset` state twice to clean up current node.
155- * Which helps to reset value without define the type.
154+ * Clean up current node.
156155 */
157- this . setState (
158- {
159- reset : true ,
160- } ,
161- ( ) => {
162- this . setState ( { reset : false } ) ;
163- } ,
164- ) ;
156+ this . setState ( ( { resetCount } ) => ( {
157+ resetCount : resetCount + 1 ,
158+ } ) ) ;
165159 } ;
166160
167161 // ========================= Field Entity Interfaces =========================
@@ -453,7 +447,7 @@ class Field extends React.Component<FieldProps, FieldState>
453447 } ;
454448
455449 public render ( ) {
456- const { reset } = this . state ;
450+ const { resetCount } = this . state ;
457451 const { children } = this . props ;
458452
459453 const { child, isFunction } = this . getOnlyChild ( children ) ;
@@ -472,12 +466,7 @@ class Field extends React.Component<FieldProps, FieldState>
472466 returnChildNode = child ;
473467 }
474468
475- // Force render a new component to reset all the data
476- if ( reset ) {
477- return React . createElement ( ( ) => < > { returnChildNode } </ > ) ;
478- }
479-
480- return returnChildNode ;
469+ return < React . Fragment key = { resetCount } > { returnChildNode } </ React . Fragment > ;
481470 }
482471}
483472
0 commit comments