Skip to content

Commit cf71a20

Browse files
committed
Modified src/Form.js
1 parent bb84744 commit cf71a20

File tree

1 file changed

+40
-65
lines changed

1 file changed

+40
-65
lines changed

src/Form.js

Lines changed: 40 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)