如何在提交表单后重置表单并启用提交按钮(react-formio)?
how to reset the form and enable submit button after form submision (react-formio)?
我正在使用 react-formio 包来动态生成表单。
我使用这个 link 生成了一个简单的登录表单:https://codesandbox.io/s/cra-react-formio-iy8lz
构建后,它会创建一个 JSON。然后,我使用 JSON 生成一个表单,但是当我在 fulfill all validation of form
之后通过表单提交时,它总是显示在 disable mode
为什么?
我们怎样才能再次启用按钮??当我的 promise is resolved
以及如何在提交后重置表单?
这是我的代码,codesandbox link
onSubmit={i => {
alert(JSON.stringify(i.data));
var promise1 = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve("foo");
}, 300);
});
}
还有一件事
我也加了one more button
{
label: "Click",
action: "event",
showValidations: false,
block: true,
key: "click",
type: "button",
input: true,
event: "clickEvent"
},
我还添加了点击处理程序,但它不起作用
clickEvent={() => {
alert("--ss");
}}
可以尝试使用<Form />
组件的提交属性
根据文档..
Submission data to fill the form. You can either load a previous
submission or create a submission with some pre-filled data. If you do
not provide a submissions the form will initialize an empty submission
using default values from the form.
所以在这种情况下,您可以在父组件中控制该组件。
此处 submissionData
是父组件状态,组件使用父组件的状态进行初始化(最初为空值)。
<Form submission={{ data: submissionData }} />
现在,在 onSubmit
处理程序中,您可以尝试重置状态并强制重新渲染。
onSubmit={() => {
// Reset submission data
setSubmissionData({});
};
}
完整代码如下所示。
export default () => {
const [submissionData, setSubmissionData] = useState({});
return (
<Form
//all form props
submission={{ data: submissionData }}
onSubmit={() => {
var promise1 = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve("foo");
}, 300);
});
promise1.then(function(value) {
alert(value);
// Reset submission data
setSubmissionData({});
});
}}
/>
}
附加代码和框 link 作为评论。
我正在使用 react-formio 包来动态生成表单。
我使用这个 link 生成了一个简单的登录表单:https://codesandbox.io/s/cra-react-formio-iy8lz
构建后,它会创建一个 JSON。然后,我使用 JSON 生成一个表单,但是当我在 fulfill all validation of form
之后通过表单提交时,它总是显示在 disable mode
为什么?
我们怎样才能再次启用按钮??当我的 promise is resolved
以及如何在提交后重置表单?
这是我的代码,codesandbox link
onSubmit={i => {
alert(JSON.stringify(i.data));
var promise1 = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve("foo");
}, 300);
});
}
我也加了one more button
{
label: "Click",
action: "event",
showValidations: false,
block: true,
key: "click",
type: "button",
input: true,
event: "clickEvent"
},
我还添加了点击处理程序,但它不起作用
clickEvent={() => {
alert("--ss");
}}
可以尝试使用<Form />
组件的提交属性
根据文档..
Submission data to fill the form. You can either load a previous submission or create a submission with some pre-filled data. If you do not provide a submissions the form will initialize an empty submission using default values from the form.
所以在这种情况下,您可以在父组件中控制该组件。
此处 submissionData
是父组件状态,组件使用父组件的状态进行初始化(最初为空值)。
<Form submission={{ data: submissionData }} />
现在,在 onSubmit
处理程序中,您可以尝试重置状态并强制重新渲染。
onSubmit={() => {
// Reset submission data
setSubmissionData({});
};
}
完整代码如下所示。
export default () => {
const [submissionData, setSubmissionData] = useState({});
return (
<Form
//all form props
submission={{ data: submissionData }}
onSubmit={() => {
var promise1 = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve("foo");
}, 300);
});
promise1.then(function(value) {
alert(value);
// Reset submission data
setSubmissionData({});
});
}}
/>
}
附加代码和框 link 作为评论。