Javascript 选中js映射的复选框

Javascript 选中js映射的复选框,javascript,reactjs,Javascript,Reactjs,我正在实施某种调查,并根据api响应创建问题和选项,使用map处理复选框onChange,效果非常好。但是,我无法正确选中复选框 这是复选框 <FormControlLabel key={choice.choiceID} value={choice.choiceID} control={<Radio />} label={choice.text} labelPlacement="end" na

我正在实施某种调查,并根据api响应创建问题和选项,使用map处理复选框onChange,效果非常好。但是,我无法正确选中复选框

这是复选框

<FormControlLabel 
       key={choice.choiceID}
       value={choice.choiceID}
       control={<Radio />}
       label={choice.text}
       labelPlacement="end"
       name={"" + question.questionID}
       onChange={handleChange}
       checked={
       qValues1.get(question.questionID + "") === question.questionID + ""}
 />

我尝试将贴图转换为数组,并尝试使用.includes()查找choiceID,但没有成功。

看起来您使用的是材质UI,所以您可能需要提及这一点。有时他们会改变道具和其他东西,这样会有点不稳定。就您的代码而言,您的handleChange()函数可能是问题所在。每次设置onChange事件时,我都确保使用语法
event.target.value
捕获输入。我不确定这是否有效,但试试看!我以前从未在您的代码中见过这样的非结构化语法--
const{name,value}=event.target所以这让我陷入了一个循环。你的错误是什么样的

{qValues1.get(question.questionID + "") === question.questionID + ""}
您正在检查映射
qValues
是否包含与其值匹配的键。所以你应该:

const { name, checked } = event.target
qValues1.set(name, checked ? name : undefined);

handleChange

中,它现在将如下图所示,工作正常

 <FormControlLabel
                          key={choice.choiceID}
                          control={<Radio color="primary" />}
                          label={choice.text}
                          labelPlacement="end"
                          name={question.questionID + ""}
                          value={choice.choiceID + ""}
                        />
 <FormControlLabel
                          key={choice.choiceID}
                          control={<Radio color="primary" />}
                          label={choice.text}
                          labelPlacement="end"
                          name={question.questionID + ""}
                          value={choice.choiceID + ""}
                        />
 const { name, value } = event.target;
    let { checked } = event.target;
    qValues1.set(name, checked ? value : undefined);