React实现全选功能


Posted in Javascript onAugust 25, 2020

本文实例为大家分享了React实现全选功能的具体代码,供大家参考,具体内容如下

1、主要就是使用state状态管理
2、jsx写的时候要多留心,return 的时候最好用一个()包着元素部分,不然有可能编译不过。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <script src="./js/react.development.js"></script>
  <script src="./js/react-dom.development.js"></script>
  <script src="./js/babel.min.js"></script>
  <title>全选事件</title>
</head>
<body>
  <div id="root"></div>
</body>
 
<script type="text/babel">
  class Check extends React.Component{
    constructor() {
      super();
      this.state={
        list:[
          {'value':'苹果','checked':false},
          {'value':'橘子','checked':false},
          {'value':'凤梨','checked':false},
          {'value':'菠萝','checked':false},
          {'value':'无花果','checked':false},
          {'value':'火龙果','checked':false},
          {'value':'西瓜','checked':false},
        ],
        isAllChecked:false,
        color:'red',
        opacity:1
      }
    }
    isAllChecked(e){
      let bool = e.target.checked;
      if(bool){
        this.setState({
          isAllChecked : true
        })
        this.state.list.filter((item)=>{
          item.checked = true;
        })
      }else{
        this.setState({
          isAllChecked : false
        });
        this.state.list.filter((item)=>{
          item.checked = false;
        })
      }
      this.setState({
        list:this.state.list
      })
    }
    singleChecked(e,i){
      // i 就是下标
      this.state.list[i.index].checked = e.target.checked;
      this.setState({
        list:this.state.list
      });
      var bool=this.state.list.filter((item)=>{
        return !item.checked;  
      })
      if(bool.length == 0){
        this.setState({
          isAllChecked : true
        })
      }else{
        this.setState({
          isAllChecked : false
        })
      }
    }
    componentDidMount(){
      console.log("挂载完成");
      setInterval(()=>{
        let opa = this.state.opacity;
        opa >=0 ? opa=opa-0.1 : opa=1;
        this.setState({
          opacity:opa
        })
      },500)
    }
    render(){
      return(
        <div style={{'color':'red','fontSize':'20px'}}>
          <header style={{'opacity':this.state.opacity}}>全选练习</header>
          <div style={{'marginLeft':'30px'}}>
            全选 <input type="checkbox" checked={this.state.isAllChecked ? true : false} onChange={(e)=>{this.isAllChecked(e)}} /><br/><br/>
            {
              this.state.list.map((item,index)=>{
                return (
                  <div key={index}>
                   {item.value} <input type="checkbox"  value={item.value} onChange={(e)=>{this.singleChecked(e,{index})}} 
                   checked={item.checked ? true : false} />
                  </div>
                )
              })
            }
          </div>
        </div>
      )
    }
  }
  ReactDOM.render(
    <Check />,
    document.getElementById("root")
  )
 
</script>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
IE本地存储userdata的一个bug说明
Jul 01 Javascript
js自动生成对象的属性示例代码
Oct 28 Javascript
javascript实现类似百度分享功能的方法
Jul 27 Javascript
Vue.js每天必学之构造器与生命周期
Sep 05 Javascript
VUE 更好的 ajax 上传处理 axios.js实现代码
May 10 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
Dec 07 Javascript
基于Vue+element-ui 的Table二次封装的实现
Jul 20 Javascript
jQuery插件实现的日历功能示例【附源码下载】
Sep 07 jQuery
微信上传视频文件提示(推荐)
Nov 22 Javascript
详解一个基于react+webpack的多页面应用配置
Jan 21 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
Oct 11 Javascript
vue print.js打印支持Echarts图表操作
Nov 13 Javascript
react实现复选框全选和反选组件效果
Aug 25 #Javascript
js实现数字跳动到指定数字
Aug 25 #Javascript
js实现点击选项置顶动画效果
Aug 25 #Javascript
理解JavaScript中的对象
Aug 25 #Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
Aug 25 #Javascript
node.js基础知识汇总
Aug 25 #Javascript
基于JS实现快速读取TXT文件
Aug 25 #Javascript
You might like
PHP 开发环境配置(Zend Studio)
2010/04/28 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
2011/06/28 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
php实现简单的权限管理的示例代码
2017/08/25 PHP
Ubuntu彻底删除PHP7.0的方法
2018/07/27 PHP
找到了一篇jQuery与Prototype并存的冲突的解决方法
2007/08/29 Javascript
Jquery拖拽并简单保存的实现代码
2010/11/28 Javascript
JS代码优化技巧之通俗版(减少js体积)
2011/12/23 Javascript
从URL中提取参数与将对象转换为URL查询参数的实现代码
2012/01/12 Javascript
JQuery加载图片自适应固定大小的DIV
2013/09/12 Javascript
JS按字节截取字符长度实例
2013/11/20 Javascript
JQuery中serialize()用法实例分析
2015/02/06 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
js倒计时抢购实例
2015/12/20 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
2017/04/12 Javascript
vue项目中用cdn优化的方法
2018/01/03 Javascript
django中使用vue.js的要点总结
2019/07/07 Javascript
在react-antd中弹出层form内容传递给父组件的操作
2020/10/24 Javascript
vue的$http的get请求要加上params操作
2020/11/12 Javascript
[01:19:34]2014 DOTA2国际邀请赛中国区预选赛 New Element VS Dream time
2014/05/22 DOTA
python简单实例训练(21~30)
2017/11/15 Python
python实现kMeans算法
2017/12/21 Python
python实现百度语音识别api
2018/04/10 Python
Python中的上下文管理器和with语句的使用
2018/04/17 Python
Python unittest 简单实现参数化的方法
2018/11/30 Python
python 实现一个反向单位矩阵示例
2019/11/29 Python
python爬虫开发之selenium模块详细使用方法与实例全解
2020/03/09 Python
Keras 实现加载预训练模型并冻结网络的层
2020/06/15 Python
HTML5实现移动端弹幕动画效果
2019/08/01 HTML / CSS
Draper James官网:知名演员瑞茜·威瑟斯彭所创品牌
2017/10/25 全球购物
集体婚礼证婚词
2014/01/13 职场文书
金融系毕业生自荐书
2014/07/08 职场文书
“四风”问题对照检查材料思想汇报
2014/09/16 职场文书
蓬莱阁导游词
2015/02/04 职场文书
2015年百日安全活动总结
2015/03/26 职场文书
财产分割协议书
2016/03/22 职场文书