700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > antd mobile 复选框(checkbox)如何实现全选且不影响单选?

antd mobile 复选框(checkbox)如何实现全选且不影响单选?

时间:2023-02-10 09:58:20

相关推荐

antd mobile 复选框(checkbox)如何实现全选且不影响单选?

antd mobile 复选框(checkbox)如何实现全选且不影响单选?

整体思路Checkbox API

整体思路

我们需要点击一个多选框,从而实现全选对应的所有的复选框,但是又不得影响想要单个选中的操作,为什么会有这个但是下面会说明。

Checkbox API

首先我们先搞清楚defaultCheckedchecked的区别:

defaultChecked是初始是否选中,也就是只会在初始渲染的时候作用一次,后边对它进行的操作将不会直接展现在样式上,因此它不是我们所需要的。

checked制定当前是否选中,也就是对他的操作可立马展现在样式上,它才是我们真正需要的。

搞清楚我们所需要的就简单的多了。

首先我们先实现全选,看代码:

<CheckboxItem checked={status)></CheckboxItem><CheckboxItem checked={status)></CheckboxItem>...<CheckboxItem onChange={(e) => this.whether(e)}>"全选"</CheckboxItem>whether(e) {this.setState({status:e.target.checked});}

这里的status就是来管控所有的所有的CheckboxItem状态,我们只有在点击全选时去改变这个状态就可以实现对所有的checkbox的选择,但是如果仅仅这样就会造成我们想点击单个时候无法实现,因为我们仅仅有一个状态是管控,所以要想两个同时实现就必须有两个状态去实现管控。代码如下:

<CheckboxItem checked={status || thisStatus} onChange={(e) => this.onChange(e)}></CheckboxItem><CheckboxItem checked={status || thisStatus} onChange={(e) => this.onChange(e)}></CheckboxItem>...<CheckboxItem onChange={(e) => this.whether(e)}>"全选"</CheckboxItem>whether(e) {this.setState({status:e.target.checked});}

只有在我们想要逐个点击的时候调用onchange方法改变被点击的这个thisSatus值就行了。多余代码不再赘述,俗话说授人以鱼,不如授人以渔。

如果你的checkbox是循环出来的没有这个状态那么你可以在获取数据的时候,自己添加一个字段来作为当前是否选中的标示,或者拜托服务端的同学。

可能文章的中的代码有不规范的地方,但是旨在告诉大家如何实现的思路,有任何错误欢迎指出,立马改正。自己也会把工作中遇到的坑或者新想法分享出来,大家共同进步,共同成长

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。