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