<cn> #### 动态校验规则 根据不同情况执行不同的校验规则。 </cn> <us> #### Dynamic Rules Perform different check rules according to different situations. </us> <script> import { Form } from 'vue-antd-ui' const formItemLayout = { labelCol: { span: 4 }, wrapperCol: { span: 8 }, } const formTailLayout = { labelCol: { span: 4 }, wrapperCol: { span: 8, offset: 4 }, } const DynamicRule = { data () { return { checkNick: false, } }, methods: { check () { this.form.validateFields( (err) => { if (!err) { console.info('success') } }, ) }, handleChange (e) { this.checkNick = e.target.checked this.$nextTick(() => { this.form.validateFields(['nickname'], { force: true }) }) }, }, render () { const { getFieldDecorator } = this.form return ( <div> <a-form-item {...{ props: formItemLayout }} label='Name'> {getFieldDecorator('username', { rules: [{ required: true, message: 'Please input your name', }], })( <a-input placeholder='Please input your name' /> )} </a-form-item> <a-form-item {...{ props: formItemLayout }} label='Nickname'> {getFieldDecorator('nickname', { rules: [{ required: this.checkNick, message: 'Please input your nickname', }], })( <a-input placeholder='Please input your nickname' /> )} </a-form-item> <a-form-item {...{ props: formTailLayout }}> <a-checkbox value={this.checkNick} onChange={this.handleChange} > Nickname is required </a-checkbox> </a-form-item> <a-form-item {...{ props: formTailLayout }}> <a-button type='primary' onClick={this.check}> Check </a-button> </a-form-item> </div> ) }, } export default Form.create()(DynamicRule) </script>