素材巴巴 > 程序开发 >

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

程序开发 2023-09-13 21:56:56

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

整体思路

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

Checkbox API

在这里插入图片描述
首先我们先搞清楚defaultCheckedchecked的区别:
defaultChecked 是初始是否选中,也就是只会在初始渲染的时候作用一次,后边对它进行的操作将不会直接展现在样式上,因此它不是我们所需要的。
checked 制定当前是否选中,也就是对他的操作可立马展现在样式上,它才是我们真正需要的。
搞清楚我们所需要的就简单的多了。
首先我们先实现全选,看代码:


 
 ...
  this.whether(e)}>"全选"
 whether(e) {this.setState({status:e.target.checked});}
 

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

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

只有在我们想要逐个点击的时候调用onchange方法改变被点击的这个thisSatus值就行了。多余代码不再赘述,俗话说授人以鱼,不如授人以渔。
如果你的checkbox是循环出来的没有这个状态那么你可以在获取数据的时候,自己添加一个字段来作为当前是否选中的标示,或者拜托服务端的同学。
可能文章的中的代码有不规范的地方,但是旨在告诉大家如何实现的思路,有任何错误欢迎指出,立马改正。自己也会把工作中遇到的坑或者新想法分享出来,大家共同进步,共同成长


标签:

上一篇: Angular7开荒----集成Less 下一篇:
素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。