reactjs - 反应:在菜单标签内时复选框不更新
问题描述
我试图为我的网站创建一个过滤器,用于类别和颜色等内容,并且需要某种带有复选框组的下拉菜单。由于您应该只能检查每个复选框组中的一个元素,因此我决定在单击一个元素时将其他元素的值设置为 false。然而,当我试图让它与菜单一起工作时,我遇到了这个问题:
每当我尝试更新我的复选框时,在菜单标签内以编程方式它不会更新。但是,如果我将它放在菜单标签之外,它就可以正常工作。(我正在使用上下文 api 来更新我的状态)。有谁知道我可能忽略了什么?提前致谢!
const Filters: React.FC = () => {
const state = useContext(ContextStore);
return (
<div>
<Menu
forceSubMenuRender={true}
style={{ width: 256, border: "white" }}
mode="inline"
>
<SubMenu
key="sub1"
title={
<span>
<span>Category</span>
</span>
}
>
<Checkbox.Group style={{ paddingLeft: "24px" }} onChange={onChange}>
<Checkbox
style={{ display: "block" }}
value={"jewelry"}
checked={state.filterChecked}
>
Jewelry
</Checkbox>
<Checkbox style={{ display: "block" }} value={"paintings"}>
Paintings
</Checkbox>
<Checkbox style={{ display: "block" }} value={"ceramics"}>
Ceramics
</Checkbox>
</Checkbox.Group>
</SubMenu>
</Menu>
<Checkbox
style={{ display: "block" }}
value={"jewelry"}
checked={state.filterChecked}
></Checkbox>
</div>
);
function selectOnlyThis(id: any) {
var myCheckbox = document.getElementsByName("myCheckbox");
Array.prototype.forEach.call(myCheckbox, function (el) {
el.checked = false;
});
id.checked = true;
}
function onChange(e: any) {
state.setFilterChecked(!state.filterChecked);
}
};
export default Filters;
解决方案
实际上我认为它很好用,但是您看不到结果,因为您正在使用useContext
,将复选框移动到单独的组件并使用useState
,它应该可以解决您的问题
推荐阅读
- hadoop - 如何在 cloudera manager 6.3 中配置“--enable_orc_scanner”,我的 impala 版本是 3.2
- sqlalchemy - 如何使用 sqlalchemy 核心编写 UPDATE 左连接多表查询(MySQL)?
- mysql - SQL 查询从表 Totals 中查找所有 ID 的金额总和,仅用于最大金额
- svn - 如何在 SVN 或 TeamCIty 构建中提交时在 YouTrack 中设置标签?
- android - 如何从Android片段内的RecyclerViewAdapter调用自定义对话框片段
- django - 在 django 中使用多个过滤器和模型过滤多对多字段中的数据
- html - 为什么我的位置:绝对,底部:0 css 样式将 div 放在顶部的某个位置?
- django - 如何在具有字典字段的嵌套序列化程序上执行补丁操作
- c++ - 键盘挂钩仅适用于 32 位程序
- c# - c# excel单元格格式为hh:mm:ss