【发布时间】:2021-12-26 18:00:56
【问题描述】:
我有两个输入字段。当我按下复选框时,solutestate 中存储的状态值应该在第一个输入框中。那么如果我取消选中该框,则应更改第二个输入字段中的值。两个输入框都应该有独立的状态变化。我附上了一个我正在尝试编辑的代码框链接Sandbox link。
import "./styles.css";
import { Jsme } from "jsme-react";
import { useState } from "react";
import { useForm } from "react-hook-form";
import { default as FormData } from "form-data";
export default function App() {
const [input1, setInput1] = useState("");
const [input2, setInput2] = useState("");
const [syncToFirst, setSyncToFirst] = useState();
const [solutestate, setSoluteState] = useState();
const { register, handleSubmit, control } = useForm({
defaultValues: {
solute: "",
solvent: ""
}
});
const formData = new FormData();
return (
<div className="App">
<Jsme
height="300px"
width="400px"
options="oldlook,star"
onChange={setSoluteState}
/>
<h1>{solutestate}</h1>
<input
className="mr-2 leading-tight"
type="checkbox"
onChange={(event) => {
setSyncToFirst(event.target.checked ? 1 : 2);
}}
/>
<input
className="mr-2 leading-tight"
type="checkbox"
onChange={(event) => {
setSyncToFirst(event.target.checked ? 1 : 2);
}}
/>
<form>
<input
{...register("solute")}
placeholder="SOLUTE"
onChange={(e) =>
syncToFirst === 1
? setSoluteState(e.target.value)
: setInput1(e.target.value)
}
value={syncToFirst === 1 ? solutestate : input1}
/>
<input
{...register("solvent")}
placeholder="SOLVENT"
onChange={(e) =>
syncToFirst === 2
? setSoluteState(e.target.value)
: input2(e.target.value)
}
value={syncToFirst === 2 ? solutestate : input2}
/>
</form>
</div>
);
}
【问题讨论】:
-
你能澄清你想要做什么吗?取消选中第一个复选框时会发生什么?当您选中和取消选中另一个复选框时会发生什么?
-
@hellogoodnight 当我选中第一个框时,状态值应该在第一个输入字段中。当我取消选中第一个框并选中第二个框时,状态值应该在第二个输入字段中。在选中第二个框并取消选中第一个框时,第一个输入字段中的值应保留。顺便说一句,我正在使用两个输入字段进行预测。
-
如果两个复选框都被选中会发生什么?
-
@hellogoodnight 我们也可以用一个复选框来做同样的事情。如果选中它应该填充在第一个输入字段中,如果取消选中它应该填充第二个输入字段
-
@hellogoodnight 在同时检查两个输入字段时,应为两个输入字段赋予相同的值
标签: javascript reactjs forms react-hooks react-state