288 lines
6.4 KiB
JavaScript
288 lines
6.4 KiB
JavaScript
/* eslint react/no-multi-comp:0, no-console:0 */
|
|
|
|
import { createForm } from '../index';
|
|
import BaseMixin from '../../_util/BaseMixin';
|
|
|
|
const Form1 = {
|
|
mixins: [BaseMixin],
|
|
props: {
|
|
form: Object,
|
|
},
|
|
data() {
|
|
return {
|
|
useInput: true,
|
|
};
|
|
},
|
|
methods: {
|
|
onSubmit(e) {
|
|
e.preventDefault();
|
|
this.form.validateFields((error, values) => {
|
|
if (!error) {
|
|
console.log('ok', values);
|
|
} else {
|
|
console.log('error', error, values);
|
|
}
|
|
});
|
|
},
|
|
changeUseInput(e) {
|
|
this.setState({
|
|
useInput: e.target.checked,
|
|
});
|
|
},
|
|
},
|
|
|
|
render() {
|
|
const { getFieldError, getFieldDecorator } = this.form;
|
|
|
|
return (
|
|
<form onSubmit={this.onSubmit}>
|
|
<h2>situation 1</h2>
|
|
{this.useInput
|
|
? getFieldDecorator('name', {
|
|
initialValue: '',
|
|
rules: [
|
|
{
|
|
required: true,
|
|
message: "What's your name 1?",
|
|
},
|
|
],
|
|
})(<input />)
|
|
: null}
|
|
<span>text content</span>
|
|
{this.useInput
|
|
? null
|
|
: getFieldDecorator('name', {
|
|
initialValue: '',
|
|
rules: [
|
|
{
|
|
required: true,
|
|
message: "What's your name 2?",
|
|
},
|
|
],
|
|
})(<input />)}
|
|
<div>
|
|
<label>
|
|
<input type="checkbox" checked={this.useInput} onInput={this.changeUseInput} />
|
|
change input
|
|
</label>
|
|
{(getFieldError('name') || []).join(', ')}
|
|
</div>
|
|
<button>Submit</button>
|
|
</form>
|
|
);
|
|
},
|
|
};
|
|
|
|
const Form2 = {
|
|
mixins: [BaseMixin],
|
|
props: {
|
|
form: Object,
|
|
},
|
|
data() {
|
|
return {
|
|
useInput: true,
|
|
};
|
|
},
|
|
beforeMount() {
|
|
const { getFieldDecorator } = this.form;
|
|
this.nameDecorator = getFieldDecorator('name', {
|
|
initialValue: '',
|
|
rules: [
|
|
{
|
|
required: true,
|
|
message: "What's your name?",
|
|
},
|
|
],
|
|
});
|
|
},
|
|
methods: {
|
|
onSubmit(e) {
|
|
e.preventDefault();
|
|
this.form.validateFields((error, values) => {
|
|
if (!error) {
|
|
console.log('ok', values);
|
|
} else {
|
|
console.log('error', error, values);
|
|
}
|
|
});
|
|
},
|
|
changeUseInput(e) {
|
|
this.setState({
|
|
useInput: e.target.checked,
|
|
});
|
|
},
|
|
},
|
|
|
|
render() {
|
|
const { getFieldError } = this.form;
|
|
return (
|
|
<form onSubmit={this.onSubmit}>
|
|
<h2>situation 2</h2>
|
|
{this.useInput ? this.nameDecorator(<input />) : null}
|
|
<span>text content</span>
|
|
{this.useInput ? null : this.nameDecorator(<input />)}
|
|
<div>
|
|
<label>
|
|
<input type="checkbox" checked={this.useInput} onInput={this.changeUseInput} />
|
|
change input
|
|
</label>
|
|
{(getFieldError('name') || []).join(', ')}
|
|
</div>
|
|
<button>Submit</button>
|
|
</form>
|
|
);
|
|
},
|
|
};
|
|
|
|
const Form3 = {
|
|
mixins: [BaseMixin],
|
|
props: {
|
|
form: Object,
|
|
},
|
|
data() {
|
|
return {
|
|
useInput: false,
|
|
};
|
|
},
|
|
methods: {
|
|
onSubmit(e) {
|
|
e.preventDefault();
|
|
this.form.validateFields((error, values) => {
|
|
if (!error) {
|
|
console.log('ok', values);
|
|
} else {
|
|
console.log('error', error, values);
|
|
}
|
|
});
|
|
},
|
|
changeUseInput(e) {
|
|
this.setState({
|
|
useInput: e.target.checked,
|
|
});
|
|
},
|
|
},
|
|
|
|
render() {
|
|
const { getFieldError, getFieldDecorator } = this.form;
|
|
return (
|
|
<form onSubmit={this.onSubmit}>
|
|
<h2>situation 3</h2>
|
|
{getFieldDecorator('name', {
|
|
initialValue: '',
|
|
rules: [
|
|
{
|
|
required: true,
|
|
message: "What's your name 1?",
|
|
},
|
|
],
|
|
})(<input />)}
|
|
{this.useInput
|
|
? null
|
|
: getFieldDecorator('name2', {
|
|
initialValue: '',
|
|
rules: [
|
|
{
|
|
required: true,
|
|
message: "What's your name 2?",
|
|
},
|
|
],
|
|
})(<input />)}
|
|
<div>
|
|
<label>
|
|
<input type="checkbox" checked={this.useInput} onInput={this.changeUseInput} />
|
|
Hide second input
|
|
</label>
|
|
{(getFieldError('name') || []).join(', ')}
|
|
</div>
|
|
<button>Submit</button>
|
|
</form>
|
|
);
|
|
},
|
|
};
|
|
|
|
const Form4 = {
|
|
mixins: [BaseMixin],
|
|
props: {
|
|
form: Object,
|
|
},
|
|
data() {
|
|
return {
|
|
useInput: true,
|
|
};
|
|
},
|
|
methods: {
|
|
onSubmit(e) {
|
|
e.preventDefault();
|
|
this.form.validateFields((error, values) => {
|
|
if (!error) {
|
|
console.log('ok', values);
|
|
} else {
|
|
console.log('error', error, values);
|
|
}
|
|
});
|
|
},
|
|
changeUseInput(e) {
|
|
this.setState({
|
|
useInput: e.target.checked,
|
|
});
|
|
},
|
|
},
|
|
|
|
render() {
|
|
const { getFieldError, getFieldDecorator } = this.form;
|
|
return (
|
|
<form onSubmit={this.onSubmit}>
|
|
<h2>situation 4</h2>
|
|
{this.useInput
|
|
? getFieldDecorator('name', {
|
|
initialValue: '',
|
|
trigger: 'input',
|
|
rules: [
|
|
{
|
|
required: true,
|
|
message: "What's your name 1?",
|
|
},
|
|
],
|
|
})(<input />)
|
|
: getFieldDecorator('name2', {
|
|
initialValue: '',
|
|
trigger: 'input',
|
|
rules: [
|
|
{
|
|
required: true,
|
|
message: "What's your name 2?",
|
|
},
|
|
],
|
|
})(<input />)}
|
|
<div>
|
|
<label>
|
|
<input type="checkbox" checked={this.useInput} onInput={this.changeUseInput} />
|
|
toggle decorator name
|
|
</label>
|
|
{(getFieldError('name') || []).join(', ')}
|
|
{(getFieldError('name2') || []).join(', ')}
|
|
</div>
|
|
<button>Submit</button>
|
|
</form>
|
|
);
|
|
},
|
|
};
|
|
|
|
const WrappedForm1 = createForm()(Form1);
|
|
const WrappedForm2 = createForm()(Form2);
|
|
const WrappedForm3 = createForm()(Form3);
|
|
const WrappedForm4 = createForm()(Form4);
|
|
|
|
export default {
|
|
render() {
|
|
return (
|
|
<div>
|
|
<WrappedForm1 />
|
|
<WrappedForm2 />
|
|
<WrappedForm3 />
|
|
<WrappedForm4 />
|
|
</div>
|
|
);
|
|
},
|
|
};
|