Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 确定是否已检查自定义无线电组件_Javascript_Reactjs - Fatal编程技术网

Javascript 确定是否已检查自定义无线电组件

Javascript 确定是否已检查自定义无线电组件,javascript,reactjs,Javascript,Reactjs,我在React中有一个自定义的无线电组件,当我选中和取消选中值时,它会将项目添加到对象中,并且根据是否选中它们,应该有true或false 目前,它将真值与收音机的名称正确相加,但如果选择了另一个选项,我似乎无法找出如何使选项为假 我目前正在使用 constructor(){ 超级(); 此.state={ 时间帧:{}, } this.handleRadioChange=this.handleRadioChange.bind(this); } 更改(事件){ 让name=event.targe

我在React中有一个自定义的无线电组件,当我选中和取消选中值时,它会将项目添加到对象中,并且根据是否选中它们,应该有true或false

目前,它将真值与收音机的名称正确相加,但如果选择了另一个选项,我似乎无法找出如何使选项为假

我目前正在使用

constructor(){
超级();
此.state={
时间帧:{},
}
this.handleRadioChange=this.handleRadioChange.bind(this);
}
更改(事件){
让name=event.target.name
让timeFrameCopy=this.state.time\u frame;
console.log(event.target)
timeFrameCopy[event.target.value]=true
this.setState({[name]:timeFrameCopy,},this.checkState)
返回
}
}
检查状态(事件){
console.log(this.state)
}
我的无线电部件是

const无线电=(道具)=>{
返回(
{props.label}
)
}
导出默认收音机

如果我选中一个单选按钮,然后选中另一个单选按钮,则我的状态仍然具有数据:

time_frame: {single: true, recurring: true}

即使我认为其中一个是假的

如果我理解正确,您也在尝试在状态中存储一个名为
time\u frame
的对象,它将在每个无线电输入中包含一对属性值,其中每个属性值的名称将是属性名称,而
checked
状态值。如果是这样的话,我看到一个逻辑问题。由于您正在硬编码
true
(我从您的代码中了解到),因此始终不查找存储的值并切换/翻转它

handleRadioChange()
函数应该类似于:

handleRadioChange(event) {
        let name = event.target.name;
        this.setState((currentState)=>{
        let timeFrameCopy = currentState.time_frame;
         timeFrameCopy[name] = event.target.checked;
          return { "time_frame": timeFrameCopy };
        });
}

您也可以共享组件jsx吗?您的
handleRadioChange
有一个
返回值
,我认为您可以避免(它实际上是无用的)和一个额外的结束括号
}
,我们是否缺少部分代码?如果
time\u frame
是一个单选按钮属性,使用一堆bool是错误的方法(当然可以将所有其他值设置为
false
)。如果使用
时间帧:“single”
,则可以通过将单个无线电组件的自身值与
时间帧的值进行比较,轻松推导出是否选中了
单个无线电组件。下面是示例代码: