react纯手写全选与取消全选

<!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">

<title>Document</title>

<script src="js/react.development.js"></script>

<script src="js/react-dom.development.js"></script>

<script type="text/javascript" src="js/babel.min.js"></script>

</head>

<body>

<div id="my"></div>

<script type="text/babel">

class FormSelectT extends React.Component{

constructor(){

super()

this.state={

checkAll: false,

checkArr: [{name:‘看书‘,status:false},{name:‘睡觉‘,status:false},{name:‘喝水‘,status:true}]

}

}

changeAll(e){

let {checkAll,checkArr} = this.state;

let check = e.target.checked;

checkAll = check;

checkArr.map((val)=>{

return val.status = check

})

this.setState({

checkAll: checkAll,

checkArr: checkArr

})

}

listControllAll(e){

let {checkArr,checkAll} = this.state;

checkArr.map((val)=>{

if(val.name == e.name){

return val.status = e.status

}

})

this.setState({

checkArr:checkArr

});

let changecheckAll=checkArr.every((val)=>{

return val.status

});

this.setState({

checkAll:changecheckAll

})

}

render(){

let {checkAll,checkArr} = this.state;

let self = this;

let arrHobby = checkArr.map((val,index)=>{

return <FormSelectB key={index} {...val} listControllAll={self.listControllAll.bind(self)}/>

})

return (

<div>

<input type="checkbox" checked={checkAll} onChange={(e)=>this.changeAll(e)}/><label>全选</label>

<ul>

{arrHobby}

</ul>

</div>

)

}

}

class FormSelectB extends React.Component{

constructor(props){

super(props)

this.state={

name:props.name,

status:props.status

}

}

changeList(e){

let check = e.target.checked;

let {name,status} = this.state;

this.setState({

status:check

},function(){

this.props.listControllAll({name:this.state.name,status:this.state.status})

})

}

componentWillReceiveProps(nextProps,prevProps){

let {status} = this.state

if(nextProps.status!=prevProps.status){

this.setState({

status:nextProps.status

})

}

}

render(){

let {name,status} = this.state;

return(

<li><input type="checkbox" checked={status} onChange={(e)=>{this.changeList(e)}}/><label>{name}</label></li>

)

}

}

ReactDOM.render(

<div>

<FormSelectT/>

</div>,

document.getElementById(‘my‘)

)

</script>

</body>

</html>

原文地址:https://www.cnblogs.com/MDGE/p/10140959.html

时间: 2024-10-15 03:09:06

react纯手写全选与取消全选的相关文章

react实现全选、取消全选和个别选择

react里面实现全选和取消全选,个别选择等操作,效果如下 代码: import React, {Component} from 'react' export default class Demo extends React.Component{ constructor(props,context){ super(props,context); this.state = { checklist:[ {name:'全选',checked:false}, {name:'张三',checked:fal

vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件

vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件/库 一提到移动端的下拉刷新上拉翻页,你可能就会想到iScroll插件,没错iScroll是一个高性能,资源占用少,无依赖,多平台的javascript滚动插件.iScroll不仅仅是 滚动.它可以处理任何需要与用户进行移动交互的元素.在你的项目中包含仅仅4kb大小的iScroll,你的项目便拥有了滚动,缩放,平移,无限滚动,视差滚动,旋转功能.iScroll的强大毋庸置疑,本人也非常欢迎大家使用iScr

JavaScript全选和取消全选

<html> <head> <title>全选和取消全选</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script language="javascript"> function checkAllorcancelAll(){ //思路:1.获取checkbox的选中状

实现全选和取消全选

点击“全选老大”实现全选,再次点击取消全选,以此类推. html代码是不变的: <div id="mycheckbox"> <input type="checkbox" id="selectAll"><br> <input type="checkbox"><br> <input type="checkbox"><br> &l

如何实现复选框的全选和取消全选效果

如何实现复选框的全选和取消全选效果:在很多网站都有这样的功能,当点击一个全选按钮之后,所有的复选框都会被选中,再点击之后会取消全选,功能非常的人性化,可以省却很多人力,下面就简单介绍一下JS如何实现此功能,代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://ww

Axure 7.0实现复选框全选和取消全选

使用Axure原型工具对产品进行设计,使用复选框来实现全选中和全取消效果,也可以利用按钮或文字做为开关来控制效果,下面主要介绍使用复选框来实现全选中和全取消效果. 1/1 首先输入复选框效果的文字,并为每个复选框建立名称,方便后期对其辨认,例如:选择你最喜欢居住的城市,建立一个全选的复选框进行全选or取消全选效果 1/2 设置全选中 1/2/1 选择全选复选框,双击(选中状态改变时),打开新增用例对话框 1/2/2  设置用例名称,设置条件判断为真 1/2/3 选择(选中),勾选需要被选中的复选

纯手写wcf代码,wcf入门,wcf基础教程

<pre name="code" class="cpp">/* 中颖EEPROM,使用比较方便,但有个注意点,就是每次无论你写入 什么数据或者在哪个地址写数据,都需要将对 对应的块擦除,擦 除后才能写入成功. */ #define SSPWriteFlag 0x5A #define SSPEraseFlag 0xA5 //数据区 扇形区1 #define ADDR_START1 (uint16)0x100 //数据存储区起始地址 #define ADDR

springmvc 动态代理 JDK实现与模拟JDK纯手写实现。

首先明白 动态代理和静态代理的区别: 静态代理:①持有被代理类的引用  ② 代理类一开始就被加载到内存中了(非常重要) 动态代理:JDK中的动态代理中的代理类是动态生成的.并且生成的动态代理类为$Proxy0 静态代理实例1.创建一个接口: package proxy; public interface People { public void zhaoduixiang()throws Throwable; } 2.创建一个实现类,张三,张三能够吃饭,张三可以找对象 package proxy;

GridView中实现全选与取消全选,以便同时删除多条数据

我们项目后台操作中不可避免的会有同时删除多项的操作,本文实现的就是当点击全选时,选定当前页中所有项,当取消了某一项的选定,则“全选”CheckBox的checked也为false:然后在后台中取到所选定的项的ID,实现同时删除多项的功能. 前台代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 <%@ Page Language="