Javascript 确定是否已检查自定义无线电组件
我在React中有一个自定义的无线电组件,当我选中和取消选中值时,它会将项目添加到对象中,并且根据是否选中它们,应该有true或false 目前,它将真值与收音机的名称正确相加,但如果选择了另一个选项,我似乎无法找出如何使选项为假 我目前正在使用Javascript 确定是否已检查自定义无线电组件,javascript,reactjs,Javascript,Reactjs,我在React中有一个自定义的无线电组件,当我选中和取消选中值时,它会将项目添加到对象中,并且根据是否选中它们,应该有true或false 目前,它将真值与收音机的名称正确相加,但如果选择了另一个选项,我似乎无法找出如何使选项为假 我目前正在使用 constructor(){ 超级(); 此.state={ 时间帧:{}, } this.handleRadioChange=this.handleRadioChange.bind(this); } 更改(事件){ 让name=event.targe
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”
,则可以通过将单个无线电组件的自身值与时间帧的值进行比较,轻松推导出是否选中了单个无线电组件。下面是示例代码: