javascript - 如何从父组件触发 onClick 事件以触发其子复选框值?
问题描述
我有一个在上下文中处理状态的表单。在表单中,我有一个复选框组件,我试图在上下文中处理它的状态。因此,当我提交表单时,无论是否选中,复选框都会返回一个布尔值。我在触发复选框的事件处理程序时遇到问题。我在表单中有许多文本字段,它们的行为符合预期,一旦提交表单,它们的值就可以在 Db 中看到。
在复选框组件中,实际输入被隐藏以进行样式设置。所以用户将点击标签(其样式看起来像一个复选框)或辅助标签(充当标签)
我希望这样当用户点击任一标签时,复选框就会被触发。我在复选框输入上有 onClick,但看到它的显示被隐藏,用户无法触发事件。如果我将 onClick 放在任何一个标签或父元素上,我的 onChange 函数 e.target 将指向错误的位置。
有没有办法将输入作为 e.target 传递?如果 onClick 事件在外部 div 上?
onChange(在 RecordForm.js 中)
const onChange = (e) => {
setRecord({ ...record, [e.target.name]: e.target.value });
};
复选框.js
const CheckBox2 = ({ value, label, name, onChange }) => {
return (
<CheckBoxContainer onClick={onChange}>
<LabelContainer>
<CheckboxInput
type='checkbox'
value={value}
name={name}
/>
<CheckBoxLabel>
<Tick className='Tick' />
</CheckBoxLabel>
</LabelContainer>
<VisibleLabel>{label}</VisibleLabel>
</CheckBoxContainer>
);
};
export default CheckBox2;
解决方案
推荐阅读
- html - 当页面为 100% 缩放时,CSS 媒体查询不起作用
- qt - QML WebEngineView 获取 HTML 元素的值未更新
- c# - 为什么列出
允许添加新子但不从列表中分配 - php - 使 Laravel 6.x/Monolog 输出先前异常的堆栈跟踪
- java - Spring / JBOSS EAP 7.3 - 每当创建新的 Jdbc 连接时如何调用 Java 类/函数?
- flutter - Flutter GridView.builder 过滤后对齐项目
- nginx - 如何配置 nginx-ingress 和 Digital Ocean 负载均衡器以接受 TCP 流量并路由到 pod
- javascript - 如何通过 JavaScript 聚焦 CSS 类中的按钮
- elastic-stack - 正常运行时间监控服务发现(在 Elastic Stack 中)
- swift - 使用 UiCollectionView 我不希望 iPhone 11 上的中央空间太大