@@ -278,6 +278,8 @@ function (_React$Component) {
278278 this . fields . filter ( function ( field ) {
279279 return field . props . name === name ;
280280 } ) . forEach ( function ( field ) {
281+ var disableValidator = field . getProp ( "disableValidator" ) ;
282+ if ( disableValidator ) return ;
281283 var fieldProps = field . props ;
282284
283285 if ( fieldProps . required ) {
@@ -400,26 +402,26 @@ function (_React$Component) {
400402 formError = _this$state . formError ,
401403 validatingFields = _this$state . validatingFields ;
402404 this . fieldLocks [ name ] = this . fieldLocks [ name ] || 1 ;
403- var lockId = ++ this . fieldLocks [ name ] ; //是否异步探测
405+ var lockId = ++ this . fieldLocks [ name ] ; //是否异步检测
404406
405407 var asyncTimer = setTimeout ( function ( ) {
406- var _extends4 ;
408+ var _extends4 , _extends5 ;
407409
408410 asyncTimer = null ;
409411 if ( lockId !== _this2 . fieldLocks [ name ] ) return ;
410412
411413 _this2 . setState ( {
412- validatingFields : _extends ( { } , validatingFields , ( _extends4 = { } , _extends4 [ name ] = true , _extends4 ) )
414+ validatingFields : _extends ( { } , validatingFields , ( _extends4 = { } , _extends4 [ name ] = true , _extends4 ) ) ,
415+ formError : _extends ( { } , formError , ( _extends5 = { } , _extends5 [ name ] = null , _extends5 ) )
413416 } ) ;
414- } , asyncTestDelay ) ; // let isAsync = true;
417+ } , asyncTestDelay ) ;
415418
416419 this . _validateField ( name , function ( errors , value ) {
417- var _extends5 , _extends6 ;
420+ var _extends6 , _extends7 ;
418421
419422 if ( asyncTimer ) {
420423 clearTimeout ( asyncTimer ) ;
421- } // isAsync = false;
422-
424+ }
423425
424426 if ( lockId !== _this2 . fieldLocks [ name ] ) {
425427 callback ( errors , value , true
@@ -429,8 +431,8 @@ function (_React$Component) {
429431 }
430432
431433 _this2 . setState ( {
432- formError : _extends ( { } , formError , ( _extends5 = { } , _extends5 [ name ] = errors ? errors [ 0 ] . message : null , _extends5 ) ) ,
433- validatingFields : _extends ( { } , validatingFields , ( _extends6 = { } , _extends6 [ name ] = false , _extends6 ) )
434+ formError : _extends ( { } , formError , ( _extends6 = { } , _extends6 [ name ] = errors ? errors [ 0 ] . message : null , _extends6 ) ) ,
435+ validatingFields : _extends ( { } , validatingFields , ( _extends7 = { } , _extends7 [ name ] = false , _extends7 ) )
434436 } , function ( ) {
435437 callback ( errors , value ) ;
436438 } ) ;
@@ -441,10 +443,11 @@ function (_React$Component) {
441443 var _this3 = this ;
442444
443445 callback = typeof callback === "function" ? callback : noop ;
446+ var formError = { } ;
447+ var asyncUpdateTimer = null ;
448+ var hasRunComplete = false ;
444449 var asyncTestDelay = this . props . asyncTestDelay ;
445- var _this$state2 = this . state ,
446- formValue = _this$state2 . formValue ,
447- formError = _this$state2 . formError ;
450+ var formValue = this . state . formValue ;
448451 this . fieldLocks = { } ; //validate优先级高于validateField
449452
450453 var lockId = ++ this . formLockId ;
@@ -471,16 +474,20 @@ function (_React$Component) {
471474 }
472475
473476 if ( validCounter <= 0 ) {
477+ hasRunComplete = true ;
478+
479+ if ( asyncUpdateTimer ) {
480+ clearTimeout ( asyncUpdateTimer ) ;
481+ asyncUpdateTimer = null ;
482+ }
483+
474484 if ( lockId !== _this3 . formLockId ) {
475485 callback ( allErrors . length ? allErrors : null , formValue , true
476486 /* abort state */
477487 ) ;
478- console . log ( "abort" ) ;
479488 return ;
480489 }
481490
482- console . log ( "validate" ) ;
483-
484491 _this3 . setState ( {
485492 formError : formError ,
486493 validatingFields : { }
@@ -491,17 +498,13 @@ function (_React$Component) {
491498 } ;
492499
493500 if ( fields . length ) {
494- //包含多个异步校验的情况下只执行一次
495- var hasUpdate = false ; //校验初始化
496-
501+ //校验初始化
497502 fields . forEach ( function ( field ) {
498503 var name = field . props . name ;
499504 validCounter ++ ;
500- validatingFields [ name ] = true ;
501-
502- if ( ! ( name in formError ) ) {
503- formError [ name ] = null ;
504- }
505+ validatingFields [ name ] = true ; // if (!(name in formError)) {
506+ // formError[name] = null;
507+ // }
505508 } ) ; //开始进行字段校验
506509
507510 fields . forEach ( function ( field ) {
@@ -511,9 +514,6 @@ function (_React$Component) {
511514 var asyncTimer = setTimeout ( function ( ) {
512515 isAsyncValidate = true ;
513516 asyncTimer = null ;
514- if ( hasUpdate ) return ;
515- hasUpdate = true ;
516- updateFormState ( ) ;
517517 } , asyncTestDelay ) ;
518518
519519 _this3 . _validateField ( name , function ( errors ) {
@@ -531,7 +531,14 @@ function (_React$Component) {
531531
532532 complete ( errors , name ) ;
533533 } , triggerType ) ;
534- } ) ;
534+ } ) ; //如果校验方法中存在异步校验则先显示同步校验的信息及异步状态
535+
536+ asyncUpdateTimer = setTimeout ( function ( ) {
537+ asyncUpdateTimer = null ; //如果不存在异步校验,hasRunComplete会为true
538+
539+ if ( hasRunComplete ) return ;
540+ updateFormState ( ) ;
541+ } , asyncTestDelay ) ;
535542 } else {
536543 callback ( null , formValue ) ;
537544 }
@@ -599,6 +606,7 @@ Form.propTypes = process.env.NODE_ENV !== "production" ? {
599606 getDefaultFieldValue : PropTypes . func ,
600607 renderControlExtra : PropTypes . func ,
601608 formValue : PropTypes . object ,
609+ disableValidator : PropTypes . func ,
602610 validators : PropTypes . object ,
603611 validateDelay : PropTypes . number ,
604612 validateTrigger : PropTypes . oneOfType ( [ PropTypes . oneOf ( [ "blur" , "change" , "none" ] ) , PropTypes . array ] ) ,
@@ -623,10 +631,12 @@ Form.defaultProps = {
623631 prefixCls : "nex-form" ,
624632 className : "" ,
625633 style : { } ,
634+ //实验性质,有序可能移除
635+ disableValidator : false ,
626636 validators : { } ,
627637 path2obj : true ,
628638 component : "form" ,
629- asyncTestDelay : 100 ,
639+ asyncTestDelay : 16 ,
630640 validateDelay : 0 ,
631641 validateTrigger : [ "change" ] ,
632642 //"blur",
0 commit comments