/* eslint react/no-multi-comp:0, no-console:0 */ import { createForm } from '../index' import { regionStyle, errorStyle } from './styles' const Email = { props: { form: Object, hidden: Boolean, }, render () { const { hidden, form } = this const { getFieldProps, getFieldError, isFieldValidating } = form const errors = getFieldError('email') const style = { ...regionStyle, display: hidden ? 'none' : '', } return (<div style={ style }> <div>email: <input {...getFieldProps('email', { rules: [ { required: true, }, { type: 'email', message: '错误的 email 格式', }, ], hidden, })} /></div> {errors ? <div style={errorStyle}>{errors.join(',')}</div> : null} {isFieldValidating('email') ? <div style={errorStyle}>validating</div> : null} </div>) }, } const User = { props: { form: Object, }, render () { const { getFieldProps, getFieldError, isFieldValidating } = this.form const errors = getFieldError('user') return (<div style={ regionStyle }> <div>user: <input {...getFieldProps('user', { initialValue: 'x', rules: [ { required: true, }, ], })} /> </div> {errors ? <div style={errorStyle}>{errors.join(',')}</div> : null} {isFieldValidating('user') ? <div style={errorStyle}>validating</div> : null} </div>) }, } const Form = { props: { form: Object, }, methods: { onSubmit (e) { e.preventDefault() this.form.validateFields((error, values) => { if (!error) { console.log('ok', values) } else { console.log('error', error, values) } }) }, }, render () { const { form } = this const { getFieldProps, getFieldValue } = form return (<div style={{ margin: 20 }}> <h2>overview</h2> <form onSubmit={this.onSubmit}> <div style={ regionStyle }> <div> <label>remove/add user: <input type='checkbox' {...getFieldProps('remove_user', { // initialValue:true, valuePropName: 'checked', })} /> </label> </div> </div> { getFieldValue('remove_user') ? null : <User form={ form }/>} <div style={ regionStyle }> <div> <label>hide/show email: <input type='checkbox' {...getFieldProps('hide_email', { // initialValue:true, valuePropName: 'checked', })} /></label> </div> </div> <Email form={ form } hidden={!!getFieldValue('hide_email')}/> <div style={ regionStyle }> <button>submit</button> </div> </form> </div>) }, } export default createForm()(Form)