рд╣рдо рдЕрдкрдиреЗ рдкреНрд░рдкрддреНрд░ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдШрдЯрдХ рдореЗрдВ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЙрдирдХрд╛ рд╕рддреНрдпрд╛рдкрди рддрд░реНрдХ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг
UsernameInput.js
class UsernameInput extends Component {
render() {
return this.props.form.getFieldDecorator(this.props.id, {
rules: [...]
})(InputComponent);
}
}
рдФрд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЕрдкрдиреЗ рд░реВрдкреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
// imports here
class CustomForm {
render() {
return (<Form>
<Form.Item>
<UsernameInput form={this.props.form} />
</Form.Item>
</Form>);
}
}
export default Form.create()(CustomForm);
рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдХреНрдпреЛрдВрдХрд┐ FormItem.getControls рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдШрдЯрдХ рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛рддрд╛ рд╣реИред рдмрд╕ рдЖрд╡рд░рдг рдХреЛ UsernameInput рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реИред
FormItem
рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП UsernameInput
рдФрд░ рдХрд╛рдо рдХрд┐рд╕реА рднреА рдЗрдирдкреБрдЯ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд░реВрдк рдореЗрдВред рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛, рдорджрдж рдЖрджрд┐ рджрд┐рдЦрд╛рдПрдВред
FormItem
рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рдЕрдВрджрд░ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред
рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреА рд╕рд▓рд╛рд╣ (рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ) рдпрд╣рд╛рдБ рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдХреЛрдИ рд╣реЛ?
рд╣рдордиреЗ рдШрдЯрдХ рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрд▓ рдХрд░рдХреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛
CustomForm.js
// imports here
class CustomForm {
render() {
return (<Form>
<Form.Item>
{UsernameInput({ form: this.props.form })}
</Form.Item>
</Form>);
}
}
export default Form.create()(CustomForm);
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЦреБрд▓реЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рдВрднрд╡ рд╕рдорд╛рдзрд╛рди FormItem
рдореЗрдВ рдПрдХ рд╕рдВрджрд░реНрдн рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ Input
рдореМрдЬреВрдж рд╣реЛрдиреЗ рдкрд░ рдЦреБрдж рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг
FormItem.js
class FormItem extends Component {
static childContextTypes = {
registerControl: PropTypes.func
};
getChildContext() {
return { registerControl: this.registerControl };
}
registerControl(control) {
this.controls.push(control);
}
}
Input.js
class Input extends Component {
static contextTypes = {
registerControl: PropTypes.func
};
componentDidMount() {
if (this.context.registerControl) {
this.registerControl(this);
}
}
}
рдореИрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
рдЗрд╕ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд╕рд╛рде @gaastonsr рдпреВрдЬрд░рдиреЗрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдирд╛ рдкреВрд░рд╛ рдХреЛрдб рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реИ?
@gaastonsr рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдореБрдЭреЗ рдмрд╣реБрдд рдорджрдж рдХрд░рддрд╛ рд╣реИ!
рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА рд╡реИрдз рдореБрджреНрджрд╛ рд╣реИ? рд╕рдВрджрд░реНрдн рд╕реБрдЭрд╛рд╡ рдореБрдЭреЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред
рдмрд╕ [email protected] рдкрд░ рдЖрдЬ рдЗрд╕ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ @gaastonsr рдХрд╛ рдлрд╝рдВрдХреНрд╢рди рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИред
рдирдорд╕реНрдХрд╛рд░ @gaastonsrред рд╣рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрдкрдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ / рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП
рдирдорд╕реНрдХрд╛рд░ @gaastonsr, рд╣рдо рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ / рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реИрдВ, рдХреГрдкрдпрд╛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╡реЗрджрди рдореЗрдВ рдЗрд╕ рдЧреЛрджрд╛рдо рдореЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред рдХреГрдкрдпрд╛ рд╕рд╣реА рд╢рд╛рдЦрд╛ рдореЗрдВ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдВ (рдлреАрдЪрд░ рд╢рд╛рдЦрд╛ рдореЗрдВ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ, рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛ рдореЗрдВ рдЕрдиреНрдп), рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рднрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ, рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдмрдВрдзрд┐рдд рдЪреИрдВрдЬ, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ, рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ, рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ, рдЖрджрд┐ рдкреНрд░рджрд╛рди рдХрд░реЗрдВред , рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕реАрдЖрдИ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВрдЧреЗ, рдЕрдЧреНрд░рд┐рдо рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдЖрдкрдХреЗ рдпреЛрдЧрджрд╛рди рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░ рд╣реИрдВ!
Atd v4 рдореЗрдВ рдирдП рдлреЙрд░реНрдо рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ, v3 рдлреЙрд░реНрдо рдХреЛ рдХрдо рд╕рдордп рдореЗрдВ рдмрдирд╛рдП рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╣рдордиреЗ рдШрдЯрдХ рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрд▓ рдХрд░рдХреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛
CustomForm.js
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЦреБрд▓реЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рдВрднрд╡ рд╕рдорд╛рдзрд╛рди
FormItem
рдореЗрдВ рдПрдХ рд╕рдВрджрд░реНрдн рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░Input
рдореМрдЬреВрдж рд╣реЛрдиреЗ рдкрд░ рдЦреБрдж рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдгFormItem.js
Input.js