遇到这样一种场景,某个页面比较复杂,页面本身是一个表单,然后 Modal 里是另外一个表单,如果我们写在同一个组件里。在表单校验时就会发生两个表单会同时校验的问题。
这时我们需要把一个表单抽离出来成一个独立的组件。然后主页面和弹窗之间的数据通信可以通过 props
来解决。
例如:
class Modal extends Component {
handleModalSubmit = e => {
e.preventDefault()
this.props.form.validateFields((err, values) => {
values.id = this.props.id
if (!err) {
request(``).then(res => {
})
}
})
}
render() {
return (
<Form onSubmit={this.handleModalSubmit}>
</Form>
}
}
const WrappedModal = Form.create()(Modal)
class MainPage extends Component {
render() {
return (
<Form onSubmit={this.handleSubmit}>
<Modal
title='弹窗表单'
visible={this.state.visible}
onCancel={this.handleCancel}>
<WrappedModal id={this.state.id} />
</Modal>
</Form>
)
}
}
const WrappedMainPage = Form.create()(MainPage)
export default WrappedMainPage