reactjs - 单选按钮需要单击两次才能使用 React Hooks 进行第二次更改
问题描述
当我第一次单击任何无线电输入时,它会起作用(这意味着我只需单击一次)。当我单击第二个无线电输入时,我必须执行两次才能更改它。我如何解决它?
export default function RadioInput() {
const { register, setValue } = useForm<FormData>();
const [inputValue1, setInputValue1] = useState('');
const [inputValue2, setInputValue2] = useState('');
const [isSelected1, setIsSelected1] = useState(false);
const [isSelected2, setIsSelected2] = useState (false);
const onChange1 = () => {
console.log(inputValue1)
setInputValue1(inputValue1)
setIsSelected1(!isSelected1)
};
const onChange2 = () => {
console.log(inputValue2)
setInputValue2(inputValue2)
setIsSelected2(!isSelected2)
};
const styles = {
radioPink: {
border: "10px solid green"
}
}
return (
<div>
<label className="radio">Company
<input type="radio" checked={isSelected1} value={inputValue1} onChange=.
{onChange1} name="is_company"/>
<span className="checkround"/>
</label>
<label className="radio">Company
<input type="radio" checked={isSelected2} value={inputValue2} onChange=
{onChange2} name="is_company"/>
<span className="checkround"/>
</label>
<button className="btn cust-btn " type="button" id="btn-registration"
>Register
</button>
</div>
);
}
解决方案
由于这是一个无线电控制,因此只能选择一个选项。因此,它只需要一个状态。就目前而言,您可能会将两个单选选项都设置为true
! 让我们重构为只有一个状态控制这个输入组。
export default function RadioInput() {
const { register, setValue } = useForm<FormData>();
const [inputValue1, setInputValue1] = useState('');
const [inputValue2, setInputValue2] = useState('');
const [selected, setSelected] = useState();
const onChange1 = () => {
console.log(inputValue1)
setInputValue1(inputValue1)
setSelected(1)
};
const onChange2 = () => {
console.log(inputValue2)
setInputValue2(inputValue2)
setSelected(2)
};
const styles = {
radioPink: {
border: "10px solid green"
}
}
return (
<div>
<label className="radio">Company
<input type="radio" checked={selected === 1} value={inputValue1} onChange={onChange1} name="is_company"/>
<span className="checkround"/>
</label>
<label className="radio">Company
<input type="radio" checked={selected === 2} value={inputValue2} onChange={onChange2} name="is_company"/>
<span className="checkround"/>
</label>
<button className="btn cust-btn " type="button" id="btn-registration"
>Register
</button>
</div>
);
}
推荐阅读
- ruby-on-rails - 在 SpawnEnvSetupperMain 中使用“断言失败”升级到 5.3.0 后,nginx 上的乘客无法启动
- java - Gradle 校验和策略
- java - IllegalArgumentException:TestDatabaseAutoConfiguration$EmbeddedDataSourceFactoryBean 类中没有可见的构造函数
- android - Espresso 不会等待自定义拦截器的模拟响应
- php - 如何在 symfony 4 中迁移关系数据库?
- variables - 从 watson 中提取变量并存储为单独的文件
- java - Neo4j - Infinispan 组合
- apl - APL - 导入 dll
- c# - sql语法错误在哪里?
- postgresql - 如何在hstore中重现订单的偶然性?