рдлрд╝реЙрд░реНрдо рдЬреИрд╕реЗ рдШрдЯрдХреЛрдВ рдХреА рдПрдХ рд╢реГрдВрдЦрд▓рд╛ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж.
рдЪреВрдВрдХрд┐ рдлреЙрд░реНрдо рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝реАрд▓реНрдб рдХреЛ рдЬрдорд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдлрд┐рд░ рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, validateFieldsAndScroll
ред рд▓реЗрдХрд┐рди рдЦреЛрдЬ рдкреНрд░рднрд╛рд╡реА рдирд╣реАрдВ рд╣реБрдИред
рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рдмрд╛рдж, рдпрд╣ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдХрд┐ рдпрджрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝реАрд▓реНрдб рдХрд╛ рдПрдХ рд╕реЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкреНрд░рднрд╛рд╡реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рддрдХ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдЗрд╕ рд╕реЗрдЯ рдореЗрдВ рд╕рд╣рд╛рдпрдХ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рд╕рддреНрдпрд╛рдкрди рдирд┐рдпрдореЛрдВ рдореЗрдВ validator
рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ, рддрдм рддрдХ рд╕рдВрдкреВрд░реНрдг validateFields
рдкрджреНрдзрддрд┐ рдкреНрд░рднрд╛рд╡реА рдирд╣реАрдВ рд╣реЛрдЧреАред
рдЕрдВрдд рдореЗрдВ, рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд validator
рдХреЙрд▓рдмреИрдХ рдореЗрдВ рд╣рдореЗрд╢рд╛ callback()
рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрд╕рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╣реИ, рдФрд░ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╣ рд╢реБрд░реБрдЖрдд рдореЗрдВ рд▓рд┐рдЦреЗ рдмрд┐рдирд╛ рдПрдХрд▓ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдБрдЪ)ред рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдареАрдХ рд╣реИред
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдмрдЧ рд╣реИ? рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, validator
рдХреЛ callback()
рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрджрд┐ callback
рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рддреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдпрд╛ рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
handleSubmit = (e) => {
e.preventDefault()
const { onSubmit } = this.props
const { validateFieldsAndScroll, getFieldsValue, resetFields } = this.props.form
validateFieldsAndScroll((err, values) => {
if (!err) {
onSubmit(getFieldsValue())
}
})
}
handleConfirmPassword = (rule, value, callback) => {
const { getFieldValue } = this.props.form
if (value && value !== getFieldValue('newPassword')) {
callback('ф╕дцмбш╛УхЕеф╕Нф╕АшЗ┤я╝Б')
}
// Note: х┐Ещб╗цА╗цШпш┐ФхЫЮф╕Аф╕к callbackя╝МхРжхИЩ validateFieldsAndScroll цЧац│ХхУНх║Ф
callback()
}
render()
<FormItem
{...formItemLayout}
label="чбошодхпЖчаБ"
>
{
getFieldDecorator('confirmPassword', {
rules: [{
required: true,
message: 'шп╖хЖНцмбш╛УхЕеф╗ечбошодцЦ░хпЖчаБ',
}, {
validator: this.handleConfirmPassword
}],
})(<Input type="password" />)
}
</FormItem>
рдЗрд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: https://github.com/yiminghe/async-validator/
рдмреАрдЯреАрдбрдмреНрд▓реВ, рдПрд╕рд┐рдВрдХ-рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХреИрд╕реЗ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИ, рдЕрдЧрд░ рдЖрдк рдЗрд╕реЗ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП callback
рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ?
рдореБрдЭрд╕реЗ рд╢рд┐рдХрд╛рдпрдд рдХреА рдЧрдИ рдереА https://www.zhihu.com/question/33629737/answer/150154145
рдЖрдк рдпрд╣ рдмрддрд╛рддреЗ рд╣реБрдП рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдХреЗ рд╣рдорд╛рд░реЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд╛рдиреА рдФрд░ рдкреГрдереНрд╡реА рдХреЛ рдврдВрдХрдирд╛ рд╣реИред
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдирдорд╕реНрддреЗ, рдХреНрдпрд╛ рдпрд╣ рдкреНрд░рдпреЛрдЧ рдХреЗрд╡рд▓ рдХрдХреНрд╖рд╛ рдореЗрдВ рд╣реА рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
рдХреНрдпрд╛ рд░рд┐рдПрдХреНрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЛ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рддрд░реАрдХреЗ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реИредрдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдХреНрдпрд╛ рдХреЛрдИ рдорд╛рдорд▓реЗ рд╣реИрдВ?
рдпрд╣ рдПрдкреАрдЖрдИ рдбрд┐рдЬрд╛рдЗрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╕рд┐рд░реНрдл рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЪреЗрдХрдмреЙрдХреНрд╕ рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ:
rules: [
{
message: 'You need to agree to our terms to sign up.',
validator: (rule, value, cb) => (value === true ? cb() : cb(true)),
},
],
рдФрд░ рдХреЙрд▓рдмреИрдХ рдХреЛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╣реИ, рдЬреЛ message
рд╕рд╛рде рднреА рдмреЗрдорд╛рдиреА рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рддрдХ рдХреБрдЫ рднреА рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, message
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕реЗ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП message
рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢)ред
рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЙрдкрдпреЛрдЧ рд╕рд╣реА рдпрд╛ рдЧрд▓рдд рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ true
рдпрд╛ false
рд▓реМрдЯрд╛рдирд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
rules: [
{
message: 'You need to agree to our terms to sign up.',
validator: (rule, value, cb) => value === true,
},
],
рдЙрдкрд▓рдмреНрдз рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдЗрд╕ рдПрдкреАрдЖрдИ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЧрдИ рд╣реИ, рдЬреЛ рдХрд┐ https://github.com/yiminghe/async-validator/ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдПрдирдЯреА рдХреЛ рдпрд╣рд╛рдВ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХреЙрд▓ рдкрд░ рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
@neekey рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ async-validator рдХреЛ рдПрдХ рд╕рдВрдЧрдд рдкреАрдЖрд░ рдЬрдорд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
@neekey рдпрд╣ рдЕрдЬреАрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рд╣реИ:
рдХреНрдпрд╛ рдХреЛрдИ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реИ?
<Row>
<Col span={24} key={"method"}>
<FormItem {...formItemMethodLayout} label="шп╖ц▒ВцЦ╣ц│Х">
{getFieldDecorator("method", {
initialValue: this.state.data.method,
validateTrigger: "onChange",
rules: [{
required: true,
message: `шп╖щАЙцЛйшп╖ц▒ВцЦ╣ц│Х`
}, {
//validator: this.state.checkUnique ? this.checkConfirmMethod.bind(this) : (rule, value, callback) => {callback();},
validator: (ш┐ЩхжВф╜ХхИдцЦнх╜УхЙНч╗Дф╗╢цШпхРжх╝АхзЛцабщкМф║Ж) я╝Я
this.checkConfirmMethod.bind(this) : (хжВцЮЬф╕НцШпх╜УхЙНч╗Дф╗╢х╝АхзЛцабщкМя╝Мх░▒ш░ГчФихЕ╢ф╗ЦхЗ╜цХ░),
}]
})(
<Select placeholder={"шп╖щАЙцЛйшп╖ц▒ВцЦ╣ц│Х"} onChange={::this.handleChange.bind(this)}>
{this.state.apiRequestMethodSelect}
</Select>
)}
</FormItem>
</Col>
</Row
рд╣рд░ рдмрд╛рд░ рдЬрдм рдореБрдЭреЗ рдлрд╝рдВрдХреНрд╢рди рд╕рддреНрдпрд╛рдкрди рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕реЗ рдПрдХ рдмрд╛рд░ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдЖрдКрдВрдЧрд╛ред рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рд╡рд╛рдХрдИ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ
startNumValidator = (rule, value, callback) => {
const { exportDataCount } = this.props;
const reg = /^[1-9][0-9]*$/;
let errors = [];
if (!reg.test(value) || value > exportDataCount) {
errors.push(new Error('illegal value'));
}
callback(errors);
}
рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдПрдХреАрдХреГрдд рдХреЙрд▓рдмреИрдХ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ? рдпрд╣ рдХрд╛рдлреА рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИред
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдПрдПрдирдЯреАрдбреА рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдиреЗ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдФрд░ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕рддреНрдпрд╛рдкрди рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ? рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ (рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ) asyncValidator (рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕)
рдЕрдиреБрд░реЛрдз рдХреЗ рдмрд╛рдж рдкреГрд╖реНрдарднреВрдорд┐ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЛ рдХреИрд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВ
рдХрд╕реНрдЯрдо рд╕рддреНрдпрд╛рдкрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдо рдореЗрдВ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛
рд╡реИрд▓рд┐рдбреЗрдЯрдлрдВрдХ = (рдирд┐рдпрдо, рдореВрд▓реНрдп, рдХреЙрд▓рдмреИрдХ) => {
рдпрджрд┐ рд╕рд╣реА) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ(11);
рдХреЙрд▓рдмреИрдХ ('рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢');
рд╡рд╛рдкрд╕реА;
}
рд╡рд╛рдкрд╕ рдХреЙрд▓ рдХрд░реЗрдВ();
};
рдореИрдВ рд╕рддреНрдпрд╛рдкрди рдкрд░рд┐рдгрд╛рдо 'рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢' рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдлреЙрд░реНрдордЗрдЯрдо рдШрдЯрдХ рдХреЗ рддрд╣рдд рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреЙрд▓рдмреИрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдВрдмрдВрдзрд┐рдд рдлреЙрд░реНрдордЗрдЯрдо рдШрдЯрдХ рдХреЗ рддрд╣рдд 'рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢' рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдВрд╕реЛрд▓ рдкрд░ рдореБрджреНрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдХреНрдпреЛрдВ?
рдЖрдк рдЕрдкрдиреЗ хЬихп╣х║ФчЪДFormItemч╗Дф╗╢ф╕ЛцШ╛чд║
рдХрд╛ рддрд░реНрдХ рдХреИрд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ?
@neekey рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ async-validator рдХреЛ рдПрдХ рд╕рдВрдЧрдд рдкреАрдЖрд░ рдЬрдорд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдХрд┐рд╕реА рдиреЗ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛, рдпрд┐рдорд┐рдВрдЧреЗ рдиреЗ рдХрд╣рд╛, рд╡рд┐рд░реЛрдз рдХрд┐рдпрд╛ред
рдЖрдк рдЕрдкрдиреЗ
хЬихп╣х║ФчЪДFormItemч╗Дф╗╢ф╕ЛцШ╛чд║
рдХрд╛ рддрд░реНрдХ рдХреИрд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ?
рдореИрдВрдиреЗ рдХрд╕реНрдЯрдо рд╕рддреНрдпрд╛рдкрди рдпреЛрдЬрдирд╛ рдмрджрд▓ рджреА рд╣реИ, рдФрд░ onFieldsChange () рдореЗрдВ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рд╣реИ, рдпрджрд┐ рдХрд╕реНрдЯрдо рдирд┐рдпрдо рдкреВрд░реЗ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕реАрдзреЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдлрд┐рд░ рддреНрд░реБрдЯрд┐ рдЬрд╛рдирдХрд╛рд░реА рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рдПрдЧреАред
onFieldsChange(props, changedFields) {
const { dispatch, detail } = props;
const finalChangedFields = { ...changedFields };
// цабщкМцЧ╢щЧ┤хдзх░ПцШпхРжчмжхРИшзДхИЩ
if (
_.has(changedFields, 'currentDate') &&
detail?.targetDate &&
compareCurrentTimeEarlierThanTargetTime(
finalChangedFields.currentDate,
detail?.targetDate
)
) {
finalChangedFields.currentDate.errors = [
{
message: 'current Date should be latter than target Date',
field: 'currentDate',
},
];
}
dispatch({
type: 'controllerModel/saveDetail',
payload: {
changedFields: finalChangedFields,
data: detail,
},
});
}
рд╕рддреНрдпрд╛рдкрди рдкрд╛рд╕ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдирд┐рдореНрди рд╕рдВрдХреЗрдд рдЧрд╛рдпрдм рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ?
рдПрдХ рдкреНрд░рд╢реНрди рдкреВрдЫреЗрдВ, рдХреНрдпрд╛ рдпрд╣ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдкреГрд╖реНрда рд▓реЛрдб рд╣реЛрдиреЗ рдкрд░ рд╕рддреНрдпрд╛рдкрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?
@neekey
рдХреЙрд▓рдмреИрдХ рд╕реБрд╡рд┐рдзрд╛
<Form>
<Form.Item ...>
{getFieldDecorator('name', {validator: (rule, value, callback) => setTimeout(callback(), 1000)})(
<Input placeholder="name" />
)}
</Form.Item>
....
рдФрд░ рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ рдирд┐рдХрд╛рд▓ рджрд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╕рдВрдкреВрд░реНрдг рдШрдЯрдХ рдЕрдирдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░ рдЯрд╛рдЗрдордЖрдЙрдЯ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреА рдХреЙрд▓рдмреИрдХ рдирд┐рдХрд╛рд▓ рджреА рдЬрд╛рддреА рд╣реИ рдФрд░
@jiufengdadi
рдореБрдЭреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди undefined
рдХреЛ callback
ред рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдкрд╛рд╕ рд╣реЛрдЧрд╛ рдЬрдм callback
рдХрд╛ рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХ рдЦрд╛рд▓реА рд╕рд░рдгреА рд╣реИред рдФрд░ рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП undefined
рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
callback
рдкрд░рд┐рднрд╛рд╖рд╛: L146
рдПрд╕рд┐рдВрдХ-рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛: [""] рдореЗрд░реЗ рдХрд╕реНрдЯрдо рд╕рддреНрдпрд╛рдкрди рдХреЗ рдмрд╛рдж рдХреНрдпреЛрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ,
рдпрджрд┐ рджреЛ рдЪреЗрдХ рд╣реИрдВ, рддреЛ рдкрд╣рд▓рд╛ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛редрдХреНрдпреЛрдВ?
```
рдирд┐рдпрдо: [
{
рдЖрд╡рд╢реНрдпрдХ: рд╕рдЪ,
рд╕рдВрджреЗрд╢: 'рдХреГрдкрдпрд╛ рдЕрдкрдирд╛ рдлрд╝реЛрди рдирдВрдмрд░ рджрд░реНрдЬ рдХрд░реЗрдВ',
},
{
рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛: (рдирд┐рдпрдо, рдореВрд▓реНрдп, рдХреЙрд▓рдмреИрдХ) => {
рдХреЛрд╢рд┐рд╢ рдХрд░реЛ {
рдЕрдЧрд░ (this.props.form.getFieldValue('prefix') == 86 && value) {
рдХреЙрдиреНрд╕реНрдЯ рд░реЗрдЧ = /^1d{10}$/;
рдЕрдЧрд░ (! reg.test (рдорд╛рди)) {
рдирдИ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХреЗрдВ ('рдХреБрдЫ рдЧрд▓рдд рд╣реИ!');
}
}
} рдкрдХрдбрд╝реЛ (рдЧрд▓рддреА) {
рдХреЙрд▓рдмреИрдХ (рддреНрд░реБрдЯрд┐);
}
},
рд╕рдВрджреЗрд╢: 'рдХреГрдкрдпрд╛ рдПрдХ рд╡реИрдз рдореЛрдмрд╛рдЗрд▓ рдлреЛрди рдирдВрдмрд░ рджрд░реНрдЬ рдХрд░реЗрдВ',
},
],
rules: [
{
required: true,
message: 'шп╖ш╛УхЕецЙЛцЬ║хП╖',
},
{
validator: (rule, value, callback) => {
try {
if (this.props.form.getFieldValue('prefix') == 86 && value) {
const reg = /^1\d{10}$/;
if (!reg.test(value)) {
throw new Error('Something wrong!');
}
}
} catch (err) {
callback(err);
return // +
}
callback() // +
},
message: 'шп╖ш╛УхЕецЬЙцХИцЙЛцЬ║хП╖',
},
],
рдХрд╕реНрдЯрдо рд╕рддреНрдпрд╛рдкрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдо рдореЗрдВ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛
рд╡реИрд▓рд┐рдбреЗрдЯрдлрдВрдХ = (рдирд┐рдпрдо, рдореВрд▓реНрдп, рдХреЙрд▓рдмреИрдХ) => {
рдпрджрд┐ рд╕рд╣реА) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ(11);
рдХреЙрд▓рдмреИрдХ ('рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢');
рд╡рд╛рдкрд╕реА;
}
рд╡рд╛рдкрд╕ рдХреЙрд▓ рдХрд░реЗрдВ();
};
рдореИрдВ рд╕рддреНрдпрд╛рдкрди рдкрд░рд┐рдгрд╛рдо 'рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢' рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдлреЙрд░реНрдордЗрдЯрдо рдШрдЯрдХ рдХреЗ рддрд╣рдд рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреЙрд▓рдмреИрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдВрдмрдВрдзрд┐рдд рдлреЙрд░реНрдордЗрдЯрдо рдШрдЯрдХ рдХреЗ рддрд╣рдд 'рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢' рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдВрд╕реЛрд▓ рдкрд░ рдореБрджреНрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдХреНрдпреЛрдВ?
рдХрд╕реНрдЯрдо рд╕рддреНрдпрд╛рдкрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдо рдореЗрдВ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛
рд╡реИрд▓рд┐рдбреЗрдЯрдлрдВрдХ = (рдирд┐рдпрдо, рдореВрд▓реНрдп, рдХреЙрд▓рдмреИрдХ) => {
рдпрджрд┐ рд╕рд╣реА) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ(11);
рдХреЙрд▓рдмреИрдХ ('рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢');
рд╡рд╛рдкрд╕реА;
}
рд╡рд╛рдкрд╕ рдХреЙрд▓ рдХрд░реЗрдВ();
};
рдореИрдВ рд╕рддреНрдпрд╛рдкрди рдкрд░рд┐рдгрд╛рдо 'рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢' рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдлреЙрд░реНрдордЗрдЯрдо рдШрдЯрдХ рдХреЗ рддрд╣рдд рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреЙрд▓рдмреИрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдВрдмрдВрдзрд┐рдд рдлреЙрд░реНрдордЗрдЯрдо рдШрдЯрдХ рдХреЗ рддрд╣рдд 'рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢' рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдВрд╕реЛрд▓ рдкрд░ рдореБрджреНрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдХреНрдпреЛрдВ?
рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛, рдЙрд╕реА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛
rules: [ { required: true, message: 'шп╖ш╛УхЕецЙЛцЬ║хП╖', }, { validator: (rule, value, callback) => { try { if (this.props.form.getFieldValue('prefix') == 86 && value) { const reg = /^1\d{10}$/; if (!reg.test(value)) { throw new Error('Something wrong!'); } } } catch (err) { callback(err); return // + } callback() // + }, message: 'шп╖ш╛УхЕецЬЙцХИцЙЛцЬ║хП╖', }, ],
рдХреНрдпрд╛ рд╕рдВрджреЗрд╢ рд╕рдВрдХреЗрдд рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛? рдЗрд╕рдХреЗ рд╕рдорд╛рди 'рдХреГрдкрдпрд╛ рдПрдХ рдореЛрдмрд╛рдЗрд▓ рдлрд╝реЛрди рдирдВрдмрд░ рджрд░реНрдЬ рдХрд░реЗрдВ, рдХреГрдкрдпрд╛ рдПрдХ рд╡реИрдз рдореЛрдмрд╛рдЗрд▓ рдлрд╝реЛрди рдирдВрдмрд░ рджрд░реНрдЬ рдХрд░реЗрдВ'
rules: [ { required: true, message: 'шп╖ш╛УхЕецЙЛцЬ║хП╖', }, { validator: (rule, value, callback) => { try { if (this.props.form.getFieldValue('prefix') == 86 && value) { const reg = /^1\d{10}$/; if (!reg.test(value)) { throw new Error('Something wrong!'); } } } catch (err) { callback(err); return // + } callback() // + }, message: 'шп╖ш╛УхЕецЬЙцХИцЙЛцЬ║хП╖', }, ],
рдХреНрдпрд╛ рд╕рдВрджреЗрд╢ рд╕рдВрдХреЗрдд рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛? рдЗрд╕рдХреЗ рд╕рдорд╛рди 'рдХреГрдкрдпрд╛ рдПрдХ рдореЛрдмрд╛рдЗрд▓ рдлрд╝реЛрди рдирдВрдмрд░ рджрд░реНрдЬ рдХрд░реЗрдВ, рдХреГрдкрдпрд╛ рдПрдХ рд╡реИрдз рдореЛрдмрд╛рдЗрд▓ рдлрд╝реЛрди рдирдВрдмрд░ рджрд░реНрдЬ рдХрд░реЗрдВ'
рдирд╣реАрдВ рд╣реЛрдЧрд╛
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░реЗрдВ
рд▓рд╛рд▓ рдЪреЗрдХ рдЧрд╛рдпрдм рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реБрдЖ? ? ? рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рдкреНрд░рднрд╛рд╡ рд╕рддреНрдпрд╛рдкрди рдХреИрд╕реЗ рдХрд░реЗрдВ рдЬреЛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реЛ? ? ?
рдирд┐рдпрдо рдХреЗ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХреЗ рдХреЙрд▓рдмреИрдХ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЪрд╛рд╣реЗ рд╡рд╣ рд╕рдлрд▓ рд╣реЛ рдпрд╛ рд╡рд┐рдлрд▓ рд╣реЛред рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред
рдХрд╕реНрдЯрдо рд╕рддреНрдпрд╛рдкрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдо рдореЗрдВ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛
рд╡реИрд▓рд┐рдбреЗрдЯрдлрдВрдХ = (рдирд┐рдпрдо, рдореВрд▓реНрдп, рдХреЙрд▓рдмреИрдХ) => {
рдпрджрд┐ рд╕рд╣реА) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ(11);
рдХреЙрд▓рдмреИрдХ ('рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢');
рд╡рд╛рдкрд╕реА;
}
рд╡рд╛рдкрд╕ рдХреЙрд▓ рдХрд░реЗрдВ();
};
рдореИрдВ рд╕рддреНрдпрд╛рдкрди рдкрд░рд┐рдгрд╛рдо 'рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢' рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдлреЙрд░реНрдордЗрдЯрдо рдШрдЯрдХ рдХреЗ рддрд╣рдд рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреЙрд▓рдмреИрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдВрдмрдВрдзрд┐рдд рдлреЙрд░реНрдордЗрдЯрдо рдШрдЯрдХ рдХреЗ рддрд╣рдд 'рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢' рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдВрд╕реЛрд▓ рдкрд░ рдореБрджреНрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдХреНрдпреЛрдВ?рдХрд╕реНрдЯрдо рд╕рддреНрдпрд╛рдкрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдо рдореЗрдВ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛
рд╡реИрд▓рд┐рдбреЗрдЯрдлрдВрдХ = (рдирд┐рдпрдо, рдореВрд▓реНрдп, рдХреЙрд▓рдмреИрдХ) => {
рдпрджрд┐ рд╕рд╣реА) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ(11);
рдХреЙрд▓рдмреИрдХ ('рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢');
рд╡рд╛рдкрд╕реА;
}
рд╡рд╛рдкрд╕ рдХреЙрд▓ рдХрд░реЗрдВ();
};
рдореИрдВ рд╕рддреНрдпрд╛рдкрди рдкрд░рд┐рдгрд╛рдо 'рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢' рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдлреЙрд░реНрдордЗрдЯрдо рдШрдЯрдХ рдХреЗ рддрд╣рдд рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреЙрд▓рдмреИрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдВрдмрдВрдзрд┐рдд рдлреЙрд░реНрдордЗрдЯрдо рдШрдЯрдХ рдХреЗ рддрд╣рдд 'рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢' рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдВрд╕реЛрд▓ рдкрд░ рдореБрджреНрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдХреНрдпреЛрдВ?рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛, рдЙрд╕реА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛
рдореБрдЭреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рднреА рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдпрджрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рди рдЦрд╛рд▓реА рд╣реИ, рддреЛ рд╕рд╛рдорд╛рдиреНрдп рдЗрдирдкреБрдЯ рдХреЗ рдмрд╛рдж рдХрд╕реНрдЯрдо рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдСрдирдмреНрд▓рд░ рд╕рдордп рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрдиреЗ рдкрд░ рдПрдХ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рди рдХрд╛ рдорд╛рди рд╣реЛрдиреЗ рдкрд░, рдЬрдм рд╡реИрд▓рд┐рдбреЗрдЯрдлреАрд▓реНрдб рд╕рднреА рдлреЙрд░реНрдо рдШрдЯрдХреЛрдВ рдХрд╛ рдПрдХреАрдХреГрдд рд╕рддреНрдпрд╛рдкрди рдХрд░рддрд╛ рд╣реИ, рддреНрд░реБрдЯрд┐ рдкреНрд░рд┐рдВрдЯ рдХреЛ рд╢реВрдиреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рдмрд╛рдж, рд╕рддреНрдпрд╛рдкрди рд╡рд┐рдлрд▓рддрд╛ рдлрд┐рд░ рд╕реЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреЙрдк рдЕрдк рд╣реЛрдЧреАред рдХрд╕реНрдЯрдо рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдПрдХ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреНрд░рд┐рдпрд╛ рд╣реИ
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд░рд┐рдЯрд░реНрди рд╣рдЯрд╛рддреЗ рд╣реИрдВ рдФрд░ рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
------------------- рдореВрд▓ рд╕рдВрджреЗрд╢ -------------------
рдкреНрд░реЗрд╖рдХ: "рдЗрд╡рд╛рди-рдПрдЪрдПрд▓"< рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рдбрд┐рд▓реАрд╡рд░реА рдХрд╛ рд╕рдордп: 20 рдирд╡рдВрдмрд░, 2019 (рдмреБрдзрд╡рд╛рд░) рд╢рд╛рдо 5:19 рдмрдЬреЗ
рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛: "рдЪреАрдВрдЯреА-рдбрд┐рдЬрд╝рд╛рдЗрди/рдЪреАрдВрдЯреА-рдбрд┐рдЬрд╝рд╛рдЗрди"< [email protected]>;
рдкреНрд░рддрд┐рд▓рд┐рдкрд┐: "wk"< [email protected]>; "рдореИрдиреБрдЕрд▓"<рдореИрдиреБрдЕрд▓ @noreply.github.com>;
рд╡рд┐рд╖рдп: рдкреБрди: [рдЪреАрдВрдЯреА-рдбрд┐рдЬрд╝рд╛рдЗрди/рдЪреАрдВрдЯреА-рдбрд┐рдЬрд╝рд╛рдЗрди] рд╣рдореЗрдВ рдлреЙрд░реНрдо рдШрдЯрдХ рдкрд░ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╣рдореЗрд╢рд╛ callback()
рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реЛрддреА рд╣реИ? рдлреЙрд░реНрдо рдХреЗ рдирд┐рдпрдореЛрдВ рдореЗрдВ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╡рд┐рдзрд┐ рдирд┐рдХрд╛рдп рдХреЛ рд╣рдореЗрд╢рд╛ рдХреЙрд▓рдмреИрдХ () рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реЛрддреА рд╣реИ рд╕рддреНрдпрд╛рдкрди? (#5155)
рдХрд╕реНрдЯрдо рд╕рддреНрдпрд╛рдкрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдо рдореЗрдВ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛
рд╡реИрд▓рд┐рдбреЗрдЯрдлрдВрдХ = (рдирд┐рдпрдо, рдореВрд▓реНрдп, рдХреЙрд▓рдмреИрдХ) => {
рдпрджрд┐ рд╕рд╣реА) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ(11);
рдХреЙрд▓рдмреИрдХ ('рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢');
рд╡рд╛рдкрд╕реА;
}
рд╡рд╛рдкрд╕ рдХреЙрд▓ рдХрд░реЗрдВ();
};
рдореИрдВ рд╕рддреНрдпрд╛рдкрди рдкрд░рд┐рдгрд╛рдо 'рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢' рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдлреЙрд░реНрдордЗрдЯрдо рдШрдЯрдХ рдХреЗ рддрд╣рдд рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреЙрд▓рдмреИрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдВрдмрдВрдзрд┐рдд рдлреЙрд░реНрдордЗрдЯрдо рдШрдЯрдХ рдХреЗ рддрд╣рдд 'рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢' рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдВрд╕реЛрд▓ рдкрд░ рдореБрджреНрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдХреНрдпреЛрдВ?
рдХрд╕реНрдЯрдо рд╕рддреНрдпрд╛рдкрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдо рдореЗрдВ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛
рд╡реИрд▓рд┐рдбреЗрдЯрдлрдВрдХ = (рдирд┐рдпрдо, рдореВрд▓реНрдп, рдХреЙрд▓рдмреИрдХ) => {
рдпрджрд┐ рд╕рд╣реА) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ(11);
рдХреЙрд▓рдмреИрдХ ('рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢');
рд╡рд╛рдкрд╕реА;
}
рд╡рд╛рдкрд╕ рдХреЙрд▓ рдХрд░реЗрдВ();
};
рдореИрдВ рд╕рддреНрдпрд╛рдкрди рдкрд░рд┐рдгрд╛рдо 'рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢' рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдлреЙрд░реНрдордЗрдЯрдо рдШрдЯрдХ рдХреЗ рддрд╣рдд рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреЙрд▓рдмреИрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдВрдмрдВрдзрд┐рдд рдлреЙрд░реНрдордЗрдЯрдо рдШрдЯрдХ рдХреЗ рддрд╣рдд 'рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢' рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдВрд╕реЛрд▓ рдкрд░ рдореБрджреНрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдХреНрдпреЛрдВ?
рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛, рдЙрд╕реА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛
рдореБрдЭреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рднреА рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдпрджрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рди рдЦрд╛рд▓реА рд╣реИ, рддреЛ рд╕рд╛рдорд╛рдиреНрдп рдЗрдирдкреБрдЯ рдХреЗ рдмрд╛рдж рдХрд╕реНрдЯрдо рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдСрдирдмреНрд▓рд░ рд╕рдордп рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрдиреЗ рдкрд░ рдПрдХ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рди рдХрд╛ рдорд╛рди рд╣реЛрдиреЗ рдкрд░, рдЬрдм рд╡реИрд▓рд┐рдбреЗрдЯрдлреАрд▓реНрдб рд╕рднреА рдлреЙрд░реНрдо рдШрдЯрдХреЛрдВ рдХрд╛ рдПрдХреАрдХреГрдд рд╕рддреНрдпрд╛рдкрди рдХрд░рддрд╛ рд╣реИ, рддреНрд░реБрдЯрд┐ рдкреНрд░рд┐рдВрдЯ рдХреЛ рд╢реВрдиреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рдмрд╛рдж, рд╕рддреНрдпрд╛рдкрди рд╡рд┐рдлрд▓рддрд╛ рдлрд┐рд░ рд╕реЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреЙрдк рдЕрдк рд╣реЛрдЧреАред рдХрд╕реНрдЯрдо рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдПрдХ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреНрд░рд┐рдпрд╛ рд╣реИ
-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдереНрд░реЗрдб рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реА рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ, рдпрд╛ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВред
рдмрд╣реБрдд рдмреБрд░рд╛
рдпрджрд┐ рдЪреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рд╣реИ, рддреЛ рдХреЛрдИ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рд╣реИред
рдХрд╛рдлреА рджреЗрд░ рддрдХ рд▓рдЧрд╛ рд░рд╣рд╛ред . .
рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЗрд╕ AntdV рдХрд╛ рд░рдЦрд░рдЦрд╛рд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
@ рдХрд╛рдБрдЧрд▓рд┐рдВрдЧ94 ?
рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдХреЛрдИ рдФрд░ рдкрд╛рда рдирд╣реАрдВ?
<a-input id="code" placeholder="шп╖ш╛УхЕечФицИ╖ID"v-decorator="[
'code',
{rules: [{ required: true, message: 'шп╖ш╛УхЕечФицИ╖ID' }, { validator: handleUsername }], validateTrigger: 'change'}
]"
>
</a-input>
handleUsername(rule, value, callback) {
value = value.trim()
if (value.length == 0) {
this.username = '';
callback();
} else {
fetchUsername({
code: value
})
.then((rest) => {
if (rest.code == 200) {
this.username = rest.data;
//callback();
} else {
this.username = '';
callback(new Error(rest.msg))
return;
}
}).finally(() => {
callback()
})
}
},
<a-form :label-col="labelCol" :wrapper-col="wrapperCol" :form="form" @submit="handleSubmit">
<a-button type="primary" htmlType="submit">чбохоЪ</a-button>
</a-form>
рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдХрд┐ рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдХреЛрдИ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рд╣реИ, рдХрдВрд╕реЛрд▓ рдореЗрдВ async-рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рджрд░реНрдЬ рдХрд░реЗрдВ: ["рдХреЛрдб рдЖрд╡рд╢реНрдпрдХ рд╣реИ"]
рдорд╛рдиреНрдп рдлрд╝реАрд▓реНрдб рдмрд┐рд▓реНрдХреБрд▓ рджрд░реНрдЬ рди рдХрд░реЗрдВ
рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдирд┐рдХрд╛рд▓реЗрдВ рдФрд░ рдЯреНрд░рд┐рдЧрд░ рдХреЛ рдорд╛рдиреНрдп рдХрд░реЗрдВ рдФрд░ рдареАрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рдВрдХреЗрдд рджреЗрдЧрд╛ред
рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ?
<a-input id="code" placeholder="шп╖ш╛УхЕечФицИ╖ID"v-decorator="[ 'code', {rules: [{ required: true, message: 'шп╖ш╛УхЕечФицИ╖ID' }, { validator: handleUsername }], validateTrigger: 'change'} ]" > </a-input>
handleUsername(rule, value, callback) { value = value.trim() if (value.length == 0) { this.username = ''; callback(); } else { fetchUsername({ code: value }) .then((rest) => { if (rest.code == 200) { this.username = rest.data; //callback(); } else { this.username = ''; callback(new Error(rest.msg)) return; } }).finally(() => { callback() }) } },
<a-form :label-col="labelCol" :wrapper-col="wrapperCol" :form="form" @submit="handleSubmit"> <a-button type="primary" htmlType="submit">чбохоЪ</a-button> </a-form>
рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдХрд┐ рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдХреЛрдИ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рд╣реИ, рдХрдВрд╕реЛрд▓ рдореЗрдВ async-рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рджрд░реНрдЬ рдХрд░реЗрдВ: ["рдХреЛрдб рдЖрд╡рд╢реНрдпрдХ рд╣реИ"]
рдорд╛рдиреНрдп рдлрд╝реАрд▓реНрдб рдмрд┐рд▓реНрдХреБрд▓ рджрд░реНрдЬ рди рдХрд░реЗрдВ
рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдирд┐рдХрд╛рд▓реЗрдВ рдФрд░ рдЯреНрд░рд┐рдЧрд░ рдХреЛ рдорд╛рдиреНрдп рдХрд░реЗрдВ рдФрд░ рдареАрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рдВрдХреЗрдд рджреЗрдЧрд╛ред
рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ?
рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рд╣реИ?рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рднреА рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛
<a-input id="code" placeholder="шп╖ш╛УхЕечФицИ╖ID"v-decorator="[ 'code', {rules: [{ required: true, message: 'шп╖ш╛УхЕечФицИ╖ID' }, { validator: handleUsername }], validateTrigger: 'change'} ]" > </a-input>
handleUsername(rule, value, callback) { value = value.trim() if (value.length == 0) { this.username = ''; callback(); } else { fetchUsername({ code: value }) .then((rest) => { if (rest.code == 200) { this.username = rest.data; //callback(); } else { this.username = ''; callback(new Error(rest.msg)) return; } }).finally(() => { callback() }) } },
<a-form :label-col="labelCol" :wrapper-col="wrapperCol" :form="form" @submit="handleSubmit"> <a-button type="primary" htmlType="submit">чбохоЪ</a-button> </a-form>
рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдХрд┐ рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдХреЛрдИ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рд╣реИ, рдХрдВрд╕реЛрд▓ рдореЗрдВ async-рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рджрд░реНрдЬ рдХрд░реЗрдВ: ["рдХреЛрдб рдЖрд╡рд╢реНрдпрдХ рд╣реИ"]
рдорд╛рдиреНрдп рдлрд╝реАрд▓реНрдб рдмрд┐рд▓реНрдХреБрд▓ рджрд░реНрдЬ рди рдХрд░реЗрдВ
рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдирд┐рдХрд╛рд▓реЗрдВ рдФрд░ рдЯреНрд░рд┐рдЧрд░ рдХреЛ рдорд╛рдиреНрдп рдХрд░реЗрдВ рдФрд░ рдареАрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рдВрдХреЗрдд рджреЗрдЧрд╛ред
рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ?рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рд╣реИ?рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рднреА рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛
// шЗкхоЪф╣ЙхпЖчаБцабщкМ
handleConfirmPassword = (rule, value, callback) => {
const { getFieldValue } = this.props.form;
if (value && value !== getFieldValue('newPwd')) {
callback('ф╕дцмбш╛УхЕеф╕Нф╕АшЗ┤я╝Б');
}
// Note: х┐Ещб╗цА╗цШпш┐ФхЫЮф╕Аф╕к callbackя╝МхРжхИЩ validateFieldsAndScroll цЧац│ХхУНх║Ф
callback();
};
цИСцШпш┐Щф╣ИшзгхЖ│чЪД
рд╡реИрд▓рд┐рдбреЗрдЯрд░рдлрди (рдирд┐рдпрдо, рдореВрд▓реНрдп, рдХреЙрд▓рдмреИрдХ) {
const psw = this.form.getFieldValue('newPwd')
рдЕрдЧрд░ (рдореВрд▓реНрдп && рдореВрд▓реНрдп! == рдкреАрдПрд╕рдбрдмреНрд▓реНрдпреВ) {
рдирд┐рдпрдоред рд╕рдВрджреЗрд╢ = 'ф╕дцмбхпЖчаБф╕Нф╕АшЗ┤'
рдХреЙрд▓рдмреИрдХ (рдирд┐рдпрдо)
}
рд╡рд╛рдкрд╕ рдХреЙрд▓ рдХрд░реЗрдВ()
}
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореБрдЭрд╕реЗ рд╢рд┐рдХрд╛рдпрдд рдХреА рдЧрдИ рдереА https://www.zhihu.com/question/33629737/answer/150154145
рдЖрдк рдпрд╣ рдмрддрд╛рддреЗ рд╣реБрдП рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдХреЗ рд╣рдорд╛рд░реЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд╛рдиреА рдФрд░ рдкреГрдереНрд╡реА рдХреЛ рдврдВрдХрдирд╛ рд╣реИред