import React from "react";
import ReactDOM from "react-dom";
import { Checkbox, message, version } from "antd";
import "antd/dist/antd.css";
import "./index.css";
const CheckboxGroup = Checkbox.Group;
const App = () => (
<div className="App">
<p>Current antd version: {version}</p>
<CheckboxGroup>
<Checkbox
value="apple"
onChange={e => {
message.info(`${e.target.value}:${e.target.checked}`);
apple
</Checkbox>
</CheckboxGroup>
ReactDOM.render(<App />, document.getElementById("root"));
What is expected?
特殊场景下使用Checkbox.Group后,需要使用Checkbox的onChange事件。
What is actually happening?
使用Checkbox.Group后Checkbox的onChange失效。
1、在地图类程序中需要分别控制多个图层的显示和隐藏(就是很多个Checkbox),Checkbox.Group的回调函数onChange只能获取到所有checked = true的选项,无法定位checked发生变动的项目。
2、目前无法改动整体代码结构,只能考虑控件自带函数的使用。
想到的解决办法
1、允许Checkbox.Group内的Checkbox触发onChange;
2、Checkbox.Group的回调事件onChange除了checkedValue外,增加引发变动的对象e:Event ;
在地图类程序中需要分别控制多个图层的显示和隐藏(就是很多个Checkbox),Checkbox.Group的回调函数onChange只能获取到所有checked = true的选项,无法定位checked发生变动的项目。
看这个描述只需要 Checkbox.Group 的 onChange 就能实现了。只需要拿到所有 checked = true 的选项作为状态,相应显示对应的图层就可以了。
在地图类程序中需要分别控制多个图层的显示和隐藏(就是很多个Checkbox),Checkbox.Group的回调函数onChange只能获取到所有checked = true的选项,无法定位checked发生变动的项目。
看这个描述只需要 Checkbox.Group 的 onChange 就能实现了。只需要拿到所有 checked = true 的选项作为状态,相应显示对应的图层就可以了。
首先,谢谢您对问题的跟进,我这边问题其实已经处理了,现在这个情况下有好几种解决方案的,我用的方式是保存事件发生前后的数据oldCheckedValue, checkedValue,然后查找差异项differenceValue,这是我目前想到的对其他项影响较小的方案。
这个问题只是在我使用过程中发现的问题,我只是觉得如果组件支持以下两种方案的其中一种,可能会让组件可控性更高些。
1、允许Checkbox.Group内的Checkbox触发onChange;
2、Checkbox.Group的回调事件onChange除了checkedValue外,增加引发变动的对象e:Event;
在地图类程序中需要分别控制多个图层的显示和隐藏(就是很多个Checkbox),Checkbox.Group的回调函数onChange只能获取到所有checked = true的选项,无法定位checked发生变动的项目。
看这个描述只需要 Checkbox.Group 的 onChange 就能实现了。只需要拿到所有 checked = true 的选项作为状态,相应显示对应的图层就可以了。
首先,谢谢您对问题的跟进,我这边问题其实已经处理了,现在这个情况下有好几种解决方案的,我用的方式是保存事件发生前后的数据oldCheckedValue, checkedValue,然后查找差异项differenceValue,这是我目前想到的对其他项影响较小的方案。
这个问题只是在我使用过程中发现的问题,我只是觉得如果组件支持以下两种方案的其中一种,可能会让组件可控性更高些。
1、允许Checkbox.Group内的Checkbox触发onChange;
2、Checkbox.Group的回调事件onChange除了checkedValue外,增加引发变动的对象e:Event;
您好,我有一个疑问,checkboxGroup 上的 onChange 事件,去改变某些图层的状态;单独加在某个 checkbox 上的 onChange 事件,也是去改变某个图层的状态,会冲突嘛?也就是说,点击了某个单独绑定了 onChange 事件的 checkbox,它的 onChange 事件会触发,但是 checkboxGroup 上的 onChange 事件也会触发吧?不知道您是怎么处理这个问题的?
@guozhengzhongGit , 在 Group 下使用应该用 Group 的 onChange 做状态管理,Checkbox 的 onChange 可能会用于其他触发,但不应该参与状态管理。
啊,意思是说,要改变 store 中的数据,只用 group 的 change 事件;如果有特殊的某个 checkbox 被点击有额外的操作,可以在它上面的 change 事件里完成哈