Javascript Mat ui FormControlLabel未使用正确的状态
我将FormControlLabel用于自定义复选框,但根据传递给它们的状态,它们似乎没有被选中/取消选中 onchange处理程序更新redux/BE中的所有内容,但在初始渲染或重新加载后,它们都将再次取消选中 我尝试了很多方法,结果迷失了方向,结果陷入了一个螺旋式的漩涡 我还尝试使用value和checked来控制复选框 当复选框通过Javascript Mat ui FormControlLabel未使用正确的状态,javascript,reactjs,ecmascript-6,material-ui,Javascript,Reactjs,Ecmascript 6,Material Ui,我将FormControlLabel用于自定义复选框,但根据传递给它们的状态,它们似乎没有被选中/取消选中 onchange处理程序更新redux/BE中的所有内容,但在初始渲染或重新加载后,它们都将再次取消选中 我尝试了很多方法,结果迷失了方向,结果陷入了一个螺旋式的漩涡 我还尝试使用value和checked来控制复选框 当复选框通过.map呈现时,它们具有从状态接收的正确布尔值,但复选框不反映这一点 你知道我哪里会出错吗 我把文件放在这里的要点中: 已设置样式的复选框是: export c
.map
呈现时,它们具有从状态接收的正确布尔值,但复选框不反映这一点
你知道我哪里会出错吗
我把文件放在这里的要点中:
已设置样式的复选框是:
export const CustomCheckbox=withStyles({
根目录:{
颜色:`${COLORS.MAIN_ORANGE}`,
“&$checked”:{
颜色:`${COLORS.MAIN_ORANGE}`
}
},
选中:{}
})(道具=>);
以及redux动作/减速器:
export const SET\u是否为\u PIN\u code\u CHECK\u IN\u CHECKED=
“venueTemplates/SET_是_PIN_CODE_CHECK_IN_CHECKED”;
export const setispinodecheckinchecked=createAction(
设置是否为PIN码检查是否为IN
);
导出常量处理程序={
[SET_IS_PIN_CODE_CHECK_IN_CHECKED]:(状态,{payload:value})=>({
状态
isPinCodeCheckInChecked:值
}),
已经兜了10个小时的圈子,任何想法或帮助都值得赞赏。您需要使用checked
(布尔值)而不是value
(字符串):
handlepinochecked(事件)}
checked={!!ispinodecheckinchecked[id]}
名称={name | |”“}
/>
也许不是最好的解决方案,但对我来说有效的方法是使用defaultChecked
例如:
defaultChecked={item?.ispinodecheckinchecked}
请在问题本身中添加如何使用组件的代码,而不仅仅是通过源代码的链接。感谢您的反馈,我这样做是因为代码太多了。下次我会记住这一点。你仍然可以这样做。不需要添加所有代码,只需添加最小的相关部分。如果需要更多的部件,人们可以在注释中要求它们。您还可以添加您尝试过的不同示例以及每个示例的错误。正如我提到的,我已经尝试过了,但没有成功。您说,我也尝试过使用value和checked来控制复选框。我知道你(一起)使用了这两种方法。这里我建议只使用选中的。这会将组件转换为非受控组件。如果这样做,则必须确保defaultValue
在所有组件的生命周期中保持不变。