Ant-design: FormItem рдЕрдВрджрд░ рдирд┐рдпрдВрддреНрд░рдг рдЗрдирдкреБрдЯ рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛рддрд╛ рд╣реИ

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

рд╡рд╛рддрд╛рд╡рд░рдг

  • atd рд╕рдВрд╕реНрдХрд░рдг: 2.7.4
  • OS рдФрд░ рдЗрд╕рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг: OS X 10.12.3
  • рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рдЗрд╕рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг: рдХреНрд░реЛрдо 56

рддреБрдордиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛? рдХреГрдкрдпрд╛ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо рдкреНрд░рджрд╛рди рдХрд░реЗрдВред

рд╣рдо рдЕрдкрдиреЗ рдкреНрд░рдкрддреНрд░ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдШрдЯрдХ рдореЗрдВ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЙрдирдХрд╛ рд╕рддреНрдпрд╛рдкрди рддрд░реНрдХ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг

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 рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рдЕрдВрджрд░ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред

Inactive IssueHuntFest help wanted ЁЯЧг Discussion

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

рд╣рдордиреЗ рдШрдЯрдХ рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрд▓ рдХрд░рдХреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛

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);
    }
  }
}

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

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреА рд╕рд▓рд╛рд╣ (рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ) рдпрд╣рд╛рдБ рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдХреЛрдИ рд╣реЛ?

рд╣рдордиреЗ рдШрдЯрдХ рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрд▓ рдХрд░рдХреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛

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, рд╣рдо рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ / рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реИрдВ, рдХреГрдкрдпрд╛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╡реЗрджрди рдореЗрдВ рдЗрд╕ рдЧреЛрджрд╛рдо рдореЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред рдХреГрдкрдпрд╛ рд╕рд╣реА рд╢рд╛рдЦрд╛ рдореЗрдВ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдВ (рдлреАрдЪрд░ рд╢рд╛рдЦрд╛ рдореЗрдВ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ, рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛ рдореЗрдВ рдЕрдиреНрдп), рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рднрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ, рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдмрдВрдзрд┐рдд рдЪреИрдВрдЬ, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ, рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ, рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ, рдЖрджрд┐ рдкреНрд░рджрд╛рди рдХрд░реЗрдВред , рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕реАрдЖрдИ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВрдЧреЗ, рдЕрдЧреНрд░рд┐рдо рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдЖрдкрдХреЗ рдпреЛрдЧрджрд╛рди рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░ рд╣реИрдВ!

giphy

Atd v4 рдореЗрдВ рдирдП рдлреЙрд░реНрдо рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ, v3 рдлреЙрд░реНрдо рдХреЛ рдХрдо рд╕рдордп рдореЗрдВ рдмрдирд╛рдП рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред

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

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

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

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

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

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

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