@@ -67,7 +67,7 @@ export interface FieldProps {
67
67
}
68
68
69
69
export interface FieldState {
70
- reset : boolean ;
70
+ resetCount : number ;
71
71
}
72
72
73
73
// 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>
82
82
} ;
83
83
84
84
public state = {
85
- reset : false ,
85
+ resetCount : 0 ,
86
86
} ;
87
87
88
88
private cancelRegisterFunc : ( ) => void | null = null ;
@@ -151,17 +151,11 @@ class Field extends React.Component<FieldProps, FieldState>
151
151
if ( this . destroy ) return ;
152
152
153
153
/**
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.
156
155
*/
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
+ } ) ) ;
165
159
} ;
166
160
167
161
// ========================= Field Entity Interfaces =========================
@@ -453,7 +447,7 @@ class Field extends React.Component<FieldProps, FieldState>
453
447
} ;
454
448
455
449
public render ( ) {
456
- const { reset } = this . state ;
450
+ const { resetCount } = this . state ;
457
451
const { children } = this . props ;
458
452
459
453
const { child, isFunction } = this . getOnlyChild ( children ) ;
@@ -472,12 +466,7 @@ class Field extends React.Component<FieldProps, FieldState>
472
466
returnChildNode = child ;
473
467
}
474
468
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 > ;
481
470
}
482
471
}
483
472
0 commit comments