reactjs - ReactJS - 如果单击处理程序是实例方法,则复选框不会重新呈现
问题描述
我在 JS Fiddle 上准备了一个演示来演示这个问题。
请记住,在我的真实示例中,我有很多自定义逻辑——我在这里跳过了——这就是为什么 JS Fiddle 中的某些部分代码(可能)看起来很奇怪。
===
问题 - 如果您单击标签 - 包装器和内部组件会得到更新和正确呈现。
但是 - 如果您单击复选框本身 - 然后包装器会更新,但复选框不会正确呈现。
https://jsfiddle.net/dbjfvsm2/5/
同时 - 如果我直接从复选框调用属性处理程序 - 那么一切都很好:
https://jsfiddle.net/dbjfvsm2/6/
我也尝试过onChange
,但结果相同。
为什么会这样?...而且我真的需要那个实例方法——onItemClick
标签和复选框都可以重用它,这是发生一些一般事情的地方。
解决方案
唯一阻止复选框被选中的是e.preventDefault();
功能onItemClick
。尝试删除它,它会工作。
onItemClick = (e, id) => {
this.props.handleCheckboxClick(id);
}
为什么它不起作用?你的答案在这里
推荐阅读
- spring-boot - 在 Swagger UI 中显示模型属性的默认值
- firebase - 用于颤振的 Firebase_database 插件不起作用(解决 android.arch.core:common:1.1.1。)
- xslt - xspec:预期失败和结果相同
- javascript - 如何使用 Sentry 捕获 *all* 错误和异常?
- r - 从物种生死表计算总系统发育分支长度的总和
- typescript - 持久实体与关系的问题
- javascript - 如何使用codeigniter上传和移动文件onclick按钮jquery?
- cmake - 避免创建 cmake_install.cmake 文件
- oracle - 将语句级触发器转换为行级触发器
- jenkins - 通过 Jenkins 连接 Git 存储库抛出 Permission Denied 错误