【发布时间】:2024-05-29 16:05:02
【问题描述】:
我有一个带有 onSubmit 函数和“提交”输入的 ReactJS 表单,如下所示。
<Form id="addItem" method="post"
onSubmit={this.handleSubmit}>
<Form.Group>
<Form.Row>
<Col xs={6}>
.
.
.
</Form.Group>
<Form.Control type="submit" id="addItemSubmit" name="add" value="Submit" />
handleSubmit 函数应该执行 HTML5 验证未涵盖的验证,然后将表单提交给 API。函数handleSubmit如下
handleSubmit(e) {
e.preventDefault();
let isValid = validateAddItemForm(this);
if (isValid) {
console.log(isValid);
//const url = "/api/addItem/" + this.props.matchId;
console.log("match offer url : " + props);
const res = fetch(url, {
method: 'post',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'X-CSRFToken': csrftoken
},
body: JSON.stringify({
id: 0,
})
})
.then((response) => response.json())
.then((responseJson) => {
return null;
})
.catch((error) => {
console.error(error);
});
} else {
console.log(isValid);
return isValid;
}
}
现在我有两个问题。
如何将道具传递给handleSubmit?我需要从当前组件中传递一些道具来为获取请求完全生成正确的 URL。
如何在获取请求的“正文”中传递表单字段?当单击提交按钮时,填充的表单是否可用作 handleSubmit 函数的对象?还是我需要使用 document.getElementById(
编辑:我目前正在使用表单验证函数中的 document.getElementById 访问每个表单字段。这似乎不是一个好主意。这就是为什么我想尽可能将它作为一个对象来访问。
【问题讨论】:
-
我认为 react 使用
onClick代替并防止默认提交。 -
Forma 值应该从 props 传递,或者在可以使它们在组件中的任何地方都可以访问的状态下传递。
-
onSubmit 似乎也有效。当用户单击提交按钮然后代码通过表单验证时,不会提交表单。但是,如果我必须使用 onClick,那么它将在提交按钮上进行。仍然存在的问题是如何传递 Component 的 props 来形成 url 以及如何访问表单字段?
-
表单字段值应保持在相同组件的状态或父组件的状态下传递给道具。
-
你能举个例子说明如何做到这一点吗?
标签: javascript reactjs