На основании вашего комментария ниже. Я взял ваш исходный код и добавил в состояние конструктор со значением по умолчанию:
// Added constructor and default value for checkNick
constructor(props) {
super(props)
this.state = {
checkNick: false
}
}
, а также добавил handleChange, потому что он был в вашем коде, но он не работал:
// Added handleChange
handleChange = (e) => {
this.setState({checkNick: e.target.checked})
}
Вот полный рабочий пример: https://stackblitz.com/edit/react-hkzvcx-bbuv6y
import React from 'react';
import ReactDOM from 'react-dom';
import 'antd/dist/antd.css';
import './index.css';
import { Form, Input, Button, Checkbox } from 'antd';
class DynamicRule extends React.Component {
// Added constructor and default value for checkNick
constructor(props) {
super(props)
this.state = {
checkNick: false
}
}
check = () => {
this.props.form.validateFields(err => {
if (!err) {
console.info('success');
}
});
};
// Added handleChange
handleChange = (e) => {
this.setState({checkNick: e.target.checked})
}
render() {
const { getFieldDecorator } = this.props.form;
return (
<div>
<Form.Item label="Name">
{getFieldDecorator('username', {
rules: [
{
required: true,
message: 'Please input your name',
},
],
})(<Input placeholder="Please input your name" />)}
</Form.Item>
<Form.Item label="Nickname">
{getFieldDecorator('nickname', {
rules: [
{
required: this.state.checkNick,
message: 'Please input your nickname',
},
],
})(<Input placeholder="Please input your nickname" />)}
</Form.Item>
<Form.Item >
<Checkbox checked={this.state.checkNick} onChange={this.handleChange}>
Nickname is required
</Checkbox>
</Form.Item>
<Form.Item >
<Button type="primary" onClick={this.check}>
Check
</Button>
</Form.Item>
</div>
);
}
}
const WrappedDynamicRule = Form.create({ name: 'dynamic_rule' })(DynamicRule);
ReactDOM.render(<WrappedDynamicRule />, document.getElementById('container'));