React antd组件多选框事件
程序员文章站
2022-07-13 23:03:03
...
按钮点击触发sendCheck()函数,代码如下:
const [userList, setUserList] = useState(userLists);//用来对多选框选项进行更新的数组
const [arrList, setArrList] = useState([]);//用来显示选中的项的数组
ES6语法,用来更新数组 ,userLists是设置的默认值
const sendCheck = (e,id) => {
const newUserLists = userList.map(
item => {
if (item .id !== id) {
return item ;
} else {
return ({ ...item , ischecked: !item .ischecked });
}
});
setUserList(newUserLists);
const lists = newUserLists.filter(item => item.ischecked);
setArrList(lists);
}
循环userList的每一项,如果当前数组每一项(item.id)的ID不等于(!==:比较运算符)当前选中的这一项(id),则返回给数组当前这一不等于选中这一项的元素(item.id,原来的),否则(else)给数组的每一项(…user)的ischecked(默认值是false)属性 取反(!item.ischecked)来操作选中勾选和取消勾选,然后将返回的新数组(newUserLists )存入setUserList(useState监听是否更新),然后获取更新后的新数组userList,还有一步:取消勾选时过滤掉当前取消的这一项(newUserLists.filter(item => item.ischecked);)因为不是即时更新所以直接操作newUserLists,更新显示(setArrList(lists);),获取更新后的arrList。
*e 必须的值(就算没用到,不带e可能会报错)
id 当前选中的这一个元素的唯一标识
item 当前数组循环的项
<Checkbox
checked={item.ischecked}
onChange={(e) => sendCheck(e, item.id)}
className="user-checkbox"
/>
上一篇: 带有全选功能的多选框
下一篇: layui 多选框根据条件限定选中个数