Ant-design: рд╣рдореЗрдВ рдлреЙрд░реНрдо рдШрдЯрдХ рдкрд░ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╣рдореЗрд╢рд╛ `рдХреЙрд▓рдмреИрдХ ()` рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 3 рдорд╛рд░реНрдЪ 2017  ┬╖  38рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: ant-design/ant-design

рдлрд╝реЙрд░реНрдо рдЬреИрд╕реЗ рдШрдЯрдХреЛрдВ рдХреА рдПрдХ рд╢реГрдВрдЦрд▓рд╛ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж.

рд╕рдорд╕реНрдпрд╛ рд╡рд┐рд╡рд░рдг

рдЪреВрдВрдХрд┐ рдлреЙрд░реНрдо рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝реАрд▓реНрдб рдХреЛ рдЬрдорд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдлрд┐рд░ рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, 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>

рдкрд░реНрдпрд╛рд╡рд░рдг

  • рдПрдПрдирдЯреАрдбреА рд╕рдВрд╕реНрдХрд░рдг: рдирд╡реАрдирддрдо
  • OS рдФрд░ рдЙрд╕рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг: OS X
  • рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рдЙрд╕рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг: рдХреНрд░реЛрдо рдирд╡реАрдирддрдо
Usage тЭУFAQ ЁЯЩЕЁЯП╗тАНтЩАя╕П WON'T RESOLVE

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореБрдЭрд╕реЗ рд╢рд┐рдХрд╛рдпрдд рдХреА рдЧрдИ рдереА https://www.zhihu.com/question/33629737/answer/150154145

рдЖрдк рдпрд╣ рдмрддрд╛рддреЗ рд╣реБрдП рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдХреЗ рд╣рдорд╛рд░реЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд╛рдиреА рдФрд░ рдкреГрдереНрд╡реА рдХреЛ рдврдВрдХрдирд╛ рд╣реИред

рд╕рднреА 38 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЗрд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: 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>
....

рдФрд░ рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ рдирд┐рдХрд╛рд▓ рджрд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╕рдВрдкреВрд░реНрдг рдШрдЯрдХ рдЕрдирдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░ рдЯрд╛рдЗрдордЖрдЙрдЯ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреА рдХреЙрд▓рдмреИрдХ рдирд┐рдХрд╛рд▓ рджреА рдЬрд╛рддреА рд╣реИ рдФрд░

рдШрдЯрдХ setState (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреА:

рдЪреЗрддрд╛рд╡рдиреА: рдПрдХ рдЕрдирдорд╛рдЙрдВрдЯ рдШрдЯрдХ рдкрд░ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реНрдерд┐рддрд┐ рдЕрджреНрдпрддрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдпрд╣ рдПрдХ рдиреЛ-рдСрдк рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдореЗрдореЛрд░реА рд▓реАрдХ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдВрдкреЛрдиреЗрдВрдЯWillUnmount рд╡рд┐рдзрд┐ рдореЗрдВ рд╕рднреА рд╕рджрд╕реНрдпрддрд╛рдПрдБ рдФрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд░рджреНрдж рдХрд░реЗрдВред

рдЕрдлрд╕реЛрд╕ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдХреЙрд▓рдмреИрдХ рд░рджреНрдж рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ! рдЗрд╕ рддреНрд░реБрдЯрд┐ рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдХреЛрдИ рдЙрдкрд╛рдп рдирд╣реАрдВ рд╣реИ!

@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: 'шп╖ш╛УхЕецЬЙцХИцЙЛцЬ║хП╖',
                },
              ],

рдХреНрдпрд╛ рд╕рдВрджреЗрд╢ рд╕рдВрдХреЗрдд рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛? рдЗрд╕рдХреЗ рд╕рдорд╛рди 'рдХреГрдкрдпрд╛ рдПрдХ рдореЛрдмрд╛рдЗрд▓ рдлрд╝реЛрди рдирдВрдмрд░ рджрд░реНрдЬ рдХрд░реЗрдВ, рдХреГрдкрдпрд╛ рдПрдХ рд╡реИрдз рдореЛрдмрд╛рдЗрд▓ рдлрд╝реЛрди рдирдВрдмрд░ рджрд░реНрдЬ рдХрд░реЗрдВ'

рдирд╣реАрдВ рд╣реЛрдЧрд╛

image

рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░реЗрдВ
image

рд▓рд╛рд▓ рдЪреЗрдХ рдЧрд╛рдпрдм рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реБрдЖ? ? ? рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рдкреНрд░рднрд╛рд╡ рд╕рддреНрдпрд╛рдкрди рдХреИрд╕реЗ рдХрд░реЗрдВ рдЬреЛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реЛ? ? ?

рдирд┐рдпрдо рдХреЗ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХреЗ рдХреЙрд▓рдмреИрдХ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЪрд╛рд╣реЗ рд╡рд╣ рд╕рдлрд▓ рд╣реЛ рдпрд╛ рд╡рд┐рдлрд▓ рд╣реЛред рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред

рдХрд╕реНрдЯрдо рд╕рддреНрдпрд╛рдкрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдо рдореЗрдВ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛
рд╡реИрд▓рд┐рдбреЗрдЯрдлрдВрдХ = (рдирд┐рдпрдо, рдореВрд▓реНрдп, рдХреЙрд▓рдмреИрдХ) => {
рдпрджрд┐ рд╕рд╣реА) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ(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')
рдЕрдЧрд░ (рдореВрд▓реНрдп && рдореВрд▓реНрдп! == рдкреАрдПрд╕рдбрдмреНрд▓реНрдпреВ) {
рдирд┐рдпрдоред рд╕рдВрджреЗрд╢ = 'ф╕дцмбхпЖчаБф╕Нф╕АшЗ┤'
рдХреЙрд▓рдмреИрдХ (рдирд┐рдпрдо)
}
рд╡рд╛рдкрд╕ рдХреЙрд▓ рдХрд░реЗрдВ()
}

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

shivekkhurana picture shivekkhurana  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

longhuasishen picture longhuasishen  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

tangsj picture tangsj  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ericdai picture ericdai  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

yangbin1994 picture yangbin1994  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ