@@ -233,8 +233,7 @@ export default class Form extends React.Component {
233233 return ! ! validatingFields [ name ] ;
234234 }
235235
236- validateField ( name , callback ) {
237- const { formError, validatingFields } = this . state ;
236+ _validateField ( name , callback ) {
238237 const value = this . getValue ( name ) ;
239238 const validators = this . getFieldValidator ( name ) ;
240239
@@ -263,23 +262,9 @@ export default class Form extends React.Component {
263262 } ) ;
264263 }
265264
266- this . setState (
267- {
268- formError : {
269- ...formError ,
270- [ name ] : errors ? errors [ 0 ] . message : null
271- } ,
272- validatingFields : {
273- ...validatingFields ,
274- [ name ] : false
275- }
276- } ,
277- ( ) => {
278- if ( typeof callback === "function" ) {
279- callback ( errors , value ) ;
280- }
281- }
282- ) ;
265+ if ( typeof callback === "function" ) {
266+ callback ( errors , value ) ;
267+ }
283268 } ;
284269
285270 const startCheck = ( ) => {
@@ -302,54 +287,44 @@ export default class Form extends React.Component {
302287 }
303288 } ;
304289
305- this . setState ( {
306- validatingFields : {
307- ...validatingFields ,
308- [ name ] : true
309- }
310- } ) ;
311-
312290 startCheck ( ) ;
291+ }
292+
293+ validateField ( name , callback ) {
294+ const { formError, validatingFields } = this . state ;
295+ //是否异步探测
296+ let isAsync = true ;
297+
298+ this . _validateField ( name , ( errors , value ) => {
299+ isAsync = false ;
300+
301+ this . setState (
302+ {
303+ formError : {
304+ ...formError ,
305+ [ name ] : errors ? errors [ 0 ] . message : null
306+ } ,
307+ validatingFields : {
308+ ...validatingFields ,
309+ [ name ] : false
310+ }
311+ } ,
312+ ( ) => {
313+ if ( typeof callback === "function" ) {
314+ callback ( errors , value ) ;
315+ }
316+ }
317+ ) ;
318+ } ) ;
313319
314- // const rules = this.getFieldRules(name);
315-
316- // if (!rules || rules.length === 0) {
317- // if (cb instanceof Function) {
318- // cb(null, value);
319- // }
320- // return;
321- // }
322-
323- // this.setState({
324- // validatingFields: {
325- // ...validatingFields,
326- // [name]: true
327- // }
328- // });
329-
330- // const descriptor = { [name]: rules };
331- // const validator = new AsyncValidator(descriptor);
332- // const data = { [name]: value };
333-
334- // validator.validate(data, { firstFields: true }, errors => {
335- // this.setState(
336- // {
337- // formError: {
338- // ...formError,
339- // [name]: errors ? errors[0].message : null
340- // },
341- // validatingFields: {
342- // ...validatingFields,
343- // [name]: false
344- // }
345- // },
346- // () => {
347- // if (cb instanceof Function) {
348- // cb(errors, value);
349- // }
350- // }
351- // );
352- // });
320+ if ( isAsync ) {
321+ this . setState ( {
322+ validatingFields : {
323+ ...validatingFields ,
324+ [ name ] : true
325+ }
326+ } ) ;
327+ }
353328 }
354329
355330 validate ( callback ) {
0 commit comments