【发布时间】:2021-12-26 21:11:10
【问题描述】:
我有两个输入文本字段,我想使用状态自动更新它们。但是每当我取消选中该框时,该值就会消失。输入后,如果我也取消选中它,它应该在那里。如果不是,我无法在输入文本字段中写入两个不同的值。
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() {
// I added the following state variables to keep track of checkboxes
const [isCheckbox1Checked, setIsCheckbox1Checked] = useState(false);
const [isCheckbox2Checked, setIsCheckbox2Checked] = useState(false);
const [input1, setInput1] = useState("");
const [input2, setInput2] = useState("");
const [syncToFirst, setSyncToFirst] = useState();
const [solutestate, setSoluteState] = useState();
const { register, handleSubmit, control } = useForm({
defaultValues: {
solute: "",
solvent: ""
}
});
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"
value={isCheckbox1Checked}
onChange={() => setIsCheckbox1Checked(prev => !prev)}
/>
<input
className="mr-2 leading-tight"
type="checkbox"
value={isCheckbox2Checked}
onChange={() => setIsCheckbox2Checked(prev => !prev)}
/>
<form>
<input
{...register("solute")}
placeholder="SOLUTE"
onChange={(e) =>
syncToFirst === 1
? setSoluteState(e.target.value)
: setInput1(e.target.value)
}
value={isCheckbox1Checked ? solutestate : input1}
/>
<input
{...register("solvent")}
placeholder="SOLVENT"
onChange={(e) =>
syncToFirst === 2
? setSoluteState(e.target.value)
: input2(e.target.value)
}
value={isCheckbox2Checked ? solutestate : input2}
/>
</form>
</div>
);
}
需要一个处理程序来在文本更改时保存状态。因此,如果我取消选中复选框,则输入字段文本中会显示先前的状态。每当我尝试直接在第二个输入文本字段中输入时,它都会抛出错误input2 is not a function。代码沙盒link
【问题讨论】:
-
我没有看到这个语句的函数 input2:
input2(e.target.value)也许你的意思是setInput2(e.target.value) -
syncToFirst 的第一个值是
undefined。如果未定义,您是否试运行过会发生什么? -
@harsh 是的,这是
input2的错字。但是,您其余的问题对您要实现的目标几乎没有意义。请改写更好,以便人们可以回答What is expected并包括What you have tried already。
标签: javascript reactjs react-state react-forms