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} ))} ); 违约: 返回加载…

; }
}