@@ -78,10 +78,8 @@ class Form extends Component {
7878 e . preventDefault ( ) ;
7979 }
8080
81- const { dirty, errors, fields } = this . state ;
82-
8381 this . setStateInternal (
84- {
82+ ( { dirty , errors , fields } ) => ( {
8583 dirty : Object . keys ( dirty ) . reduce (
8684 ( allDirty , field ) => ( {
8785 ...allDirty ,
@@ -104,7 +102,7 @@ class Form extends Component {
104102 { } ,
105103 ) ,
106104 submitted : false ,
107- } ,
105+ } ) ,
108106 this . props . onReset ,
109107 ) ;
110108 } ;
@@ -120,34 +118,34 @@ class Form extends Component {
120118 } ;
121119
122120 setError = diff => {
123- this . setStateInternal ( {
121+ this . setStateInternal ( ( { errors } ) => ( {
124122 errors : {
125- ...this . state . errors ,
123+ ...errors ,
126124 ...diff ,
127125 } ,
128- } ) ;
126+ } ) ) ;
129127 } ;
130128
131129 setField = diff => {
132- const { config, dirty, fields } = this . state ;
133- const allFields = { ...fields , ...diff } ;
134- const areDirty = {
135- ...dirty ,
136- ...Object . keys ( diff ) . reduce (
137- ( allDirty , field ) => ( {
138- ...allDirty ,
139- [ field ] :
140- dirty [ field ] ||
141- diff [ field ] !== this . initialValues [ field ] ,
142- } ) ,
143- { } ,
144- ) ,
145- } ;
146-
147- this . setStateInternal ( {
148- dirty : areDirty ,
149- errors : this . validate ( config , allFields , areDirty ) ,
150- fields : allFields ,
130+ this . setStateInternal ( ( { config, dirty, fields } ) => {
131+ const allFields = { ...fields , ...diff } ;
132+ const areDirty = {
133+ ...dirty ,
134+ ...Object . keys ( diff ) . reduce (
135+ ( allDirty , field ) => ( {
136+ ...allDirty ,
137+ [ field ] :
138+ dirty [ field ] ||
139+ diff [ field ] !== this . initialValues [ field ] ,
140+ } ) ,
141+ { } ,
142+ ) ,
143+ } ;
144+ return {
145+ dirty : areDirty ,
146+ errors : this . validate ( config , allFields , areDirty ) ,
147+ fields : allFields ,
148+ } ;
151149 } ) ;
152150 } ;
153151
0 commit comments