Reactjs 选择后React bootstrap无法取消选择单选按钮?
我可以选择一个单选按钮,但无法取消选择。你知道我做错了什么吗Reactjs 选择后React bootstrap无法取消选择单选按钮?,reactjs,react-bootstrap,Reactjs,React Bootstrap,我可以选择一个单选按钮,但无法取消选择。你知道我做错了什么吗 /** * @description Handles the state for the radio. * @param {event} * @returns {Object} Returns boolean values. */ const handleChange = (event) => { const arr = Object.keys(check); console.log(arr.lengt
/**
* @description Handles the state for the radio.
* @param {event}
* @returns {Object} Returns boolean values.
*/
const handleChange = (event) => {
const arr = Object.keys(check);
console.log(arr.length, arr.includes(event.target.name), event.target.name, arr);
if (arr.length === 1 && arr.includes(event.target.name) === false) {
setAlert(true);
} else if (arr.length === 1 && arr.includes(event.target.name) === true) {
setAlert(false);
setCheck({});
} else {
setCheck({ ...check, [event.target.name]: event.target.checked });
setAlert(false);
}
};
switch (state) {
case apiStates.ERROR:
return (
<p>
ERROR:
{error}
</p>
);
case apiStates.SUCCESS:
return (
<Col id="modelColumns" className="col-lg-6 text-center">
<p className="selectText">Select an Earth Gravitational Model:</p>
{radio.map((item) => (
<Row className="justify-content-md-center">
<label
key={item.key}
htmlFor={item.key}
id="geoidLabels"
>
<span id="modelSpan">
<Radio
id={item.key}
name={item.name}
checked={check[item.name]}
onChange={handleChange}
/>
{item.name}
</span>
</label>
</Row>
/**
*@description处理收音机的状态。
*@param{event}
*@returns{Object}返回布尔值。
*/
常量handleChange=(事件)=>{
const arr=对象键(检查);
日志(arr.length,arr.includes(event.target.name),event.target.name,arr);
if(arr.length==1&&arr.includes(event.target.name)==false){
设置警报(真);
}else if(arr.length==1&&arr.includes(event.target.name)==true){
设置警报(假);
setCheck({});
}否则{
setCheck({…check,[event.target.name]:event.target.checked});
设置警报(假);
}
};
开关(状态){
case apiStates.ERROR:
返回(
错误:
{错误}
);
成功案例:
返回(
选择地球引力模型:
{radio.map((项目)=>(
{item.name}
选择其中一个单选按钮后,handleChange事件似乎不会触发。我正在使用useState钩子来管理状态。这可能会在将来对某些人有所帮助,但下面是工作代码。比以前简单得多:
function Models() {
const [check, setCheck] = useState('');
const {
apiStates, state, error, radio,
} = GetModels();
/**
* @description Handles the state for the radio.
* @param {event}
* @returns {Object} Returns boolean values.
*/
const handleChange = (event) => {
setCheck(event.target.name);
};
switch (state) {
case apiStates.ERROR:
return (
<p>
ERROR:
{error}
</p>
);
case apiStates.SUCCESS:
return (
<Col id="modelColumns" className="col-lg-6 text-center">
<p className="selectText">Select an Earth Gravitational Model:</p>
{radio.map((item) => (
<Row className="justify-content-md-center">
<label
key={item.key}
htmlFor={item.key}
id="geoidLabels"
>
<span id="modelSpan">
<Radio
id={item.key}
name={item.name}
checked={check === item.name}
onChange={handleChange}
/>
{item.name}
</span>
</label>
</Row>
))}
</Col>
);
default:
return <p>loading...</p>;
}
函数模型(){
const[check,setCheck]=useState(“”);
常数{
状态、状态、错误、无线电、,
}=GetModels();
/**
*@description处理收音机的状态。
*@param{event}
*@returns{Object}返回布尔值。
*/
常量handleChange=(事件)=>{
setCheck(event.target.name);
};
开关(状态){
case apiStates.ERROR:
返回(
错误:
{错误}
);
成功案例:
返回(
选择地球引力模型:
{radio.map((项目)=>(
{item.name}
))}
);
违约:
返回加载…;
}
}