【发布时间】:2021-05-04 18:16:39
【问题描述】:
我目前正试图弄清楚,在没有 Input 类型的提交或触发提交的事件处理程序的情况下,如何实际提交此表单。
据我了解,无论如何都不会提交此表单。它只是用新数据重新渲染。不知何故,这对我来说看起来很棘手。
有人能给我解释一下这是在哪里评估的吗?
Index.js
import React, { useState } from "react";
import ReactDOM from "react-dom";
import { useForm } from "react-hook-form";
import Header from "./Header";
import Mui from "./Mui";
import ButtonsResult from "./ButtonsResult";
import { EditorState } from "draft-js";
import "react-datepicker/dist/react-datepicker.css";
import "antd/dist/antd.css";
import "./styles.css";
let renderCount = 0;
const defaultValues = {
Native: "",
TextField: "",
Select: "",
ReactSelect: { value: "vanilla", label: "Vanilla" },
Checkbox: false,
switch: false,
RadioGroup: "",
DraftJS: EditorState.createEmpty(),
MUIPicker: new Date("2020-08-01T00:00:00")
MUI_Slider: [0, 10]
};
function App() {
const { handleSubmit, reset, setValue, control } = useForm({ defaultValues });
const [data, setData] = useState(null);
renderCount++;
return (
<form onSubmit={handleSubmit((data) => setData(data))} className="form">
<Header renderCount={renderCount} />
<Mui control={control} />
<div className="container">
<ButtonsResult {...{ data, reset, setValue }} />
</div>
</form>
);
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
ButtonResult.js
import React from "react";
import { convertToRaw } from "draft-js";
export default ({ data, reset }) => {
return (
<>
{data && (
<pre style={{ textAlign: "left", color: "white" }}>
{JSON.stringify(
{
...data,
DraftJS: convertToRaw(data.DraftJS.getCurrentContent()).blocks[0]
.text
},
null,
2
)}
</pre>
)}
<button
className="button buttonBlack"
type="button"
onClick={() => {
reset({
Native: "",
TextField: "",
Select: "",
ReactSelect: { value: "vanilla", label: "Vanilla" },
Checkbox: false,
switch: false,
RadioGroup: "",
MUIPicker: new Date("2020-08-01T00:00:00"),
MUI_Slider: [0, 10]
});
}}
>
Reset Form
</button>
<button className="button">submit</button>
</>
);
};
现场示例
【问题讨论】:
标签: javascript reactjs react-hook-form