【发布时间】:2021-07-31 23:12:38
【问题描述】:
React 新手。我正在尝试找出在表单提交事件触发后如何关闭模态框。
export default class UserAdmin extends Component {
constructor(props) {
super(props);
this.state = {
show_user_modal : false
}
}
// Handle User Modal
handleUserModalOpen = () => {
this.setState({ show_user_modal: true});
}
handleUserModalClose = () => {
this.setState({ show_user_modal: false});
}
render() {
const { show_user_modal } = this.state;
return (
<Content>
<div className="site-layout-background">
<div className="contentBody">
<Button type="primary"onClick={this.handleUserModalOpen}>
Add User
</Button>
{show_user_modal && <AddUserModal handleClose={this.handleUserModalClose}/>}
</div>
</div>
</Content>
)
}
}
这可以完美地打开和关闭模式,并且提交在 addUserModal 中完美运行,但是我不确定在完成后我应该如何关闭模式。我试图 setState() 从父级到子级,但它甚至不想显示模态。任何帮助表示赞赏!
**添加addUserModal函数:
function AddUserModal({handleClose}){
const [addUserForm] = Form.useForm();
/** POST User */
const postUser = (values) => {
axios.post('http://localhost:5000/portal/add-user', values)
.then(res => {
if (res.status === 200) {
console.log(res.data);
}
})
};
return(
<Modal title="Add User" okText="Confirm" visible={true} onCancel={handleClose}
onOk={() => {
addUserForm
.validateFields()
.then((values) => {
postUser(values);
addUserForm.resetFields();
})
.catch((info) => {
console.log('Validate Failed:', info);
});
}}
>
<Form
form={addUserForm}
name="addUserForm"
labelCol={{span: 5,}}
wrapperCol={{span: 16,}}
initialValues={{remember: false,}}
>
<Form.Item label="Username" name="username"
rules={[
{
required: true,
message: 'Please input a username!',
},
]}
>
<Input />
</Form.Item>
<Form.Item label="Email" name="email"
rules={[
{
required: true,
message: 'Please input an email address',
},
]}
><Input />
</Form.Item>
<Form.Item label="Password" name="password"
rules={[
{
required: true,
message: 'Please input a password',
},
]}
><Input.Password />
</Form.Item>
</Form>
</Modal>
);
}
export default AddUserModal;
【问题讨论】:
-
我想我很困惑,你不能只在 API 调用的 .then 中调用
handleClose函数。就像handleClose()就在你的console.log(res.data)下方或者我错过了什么? -
我可以在 AddUserModal 中添加一个 handleclose() 函数,但它不会更新 UserAdmin 组件中的状态,因此它会关闭模式,但如果不刷新页面就无法再次打开它。有没有办法可以从我的函数中访问函数“handleUserModalClose”?或者访问UserAdmin类的状态,将状态改为false?
标签: reactjs react-hooks