Checkbox全选/取消全选

效果图:

接口数据格式:

data:[

    {

     id:**,name:**,

     is_selected_all:0,

     city:[

            {id:**,name:**,is_selected:0}  ......

       ]

      }

....

]

①页面渲染

render(){
    return (
        this.state.areasloading === false ?
        <div className='callCity-list-warp'>
            <ul className="peronTool-list query-header callCity-list">
                {

                    this.state.areas.map((items,indexs)=> {
                        return (
                            items.city.length>0 &&
                            <li key={items.id}>
                                <span className="li_area">{items.name}</span>
                                <Checkbox
                                    checked={+items.is_selected_all === 0 ? false : true}
                                    onChange={()=>this.onCheckAllChange(indexs)}

                                >全选</Checkbox>
                                {

                                    items.city.map((item,index) => {
                                        return(
                                            <Checkbox
                                                key={item.id} onChange={()=>this.onChange(indexs,index)}
                                                checked={+item.is_selected === 0 ? false : true}
                                            >{item.name}</Checkbox>
                                        )
                                    })
                                }
                            </li>
                        )
                    })
                }

            </ul>
            <div className="callCity_btn">
                <Button type='button' onClick={()=>this.props.onCancel()} >取消</Button>
                <Button type='primary' 
                        loading={this.state.iconLoading} 
                        onClick={()=>this.sureQuery()} >确定</Button>
            </div>
        </div>
            :
            <div className='member-spin'>
                <Spin />
            </div>
    )
}

②方法定义

onChange=(indexs,index)=>{
    const data = this.state.areas;
    let is_selected = data[indexs]['city'][index]['is_selected'];
    data[indexs]['city'][index]['is_selected'] = +is_selected === 0 ? 1 : 0;
    if(data[indexs]['city'][index].is_selected === 0){

        data[indexs]['is_selected_all']=0
    }else{
        data[indexs]['city'].map(item=>{
            data[indexs]['is_selected_all'] =  item.is_selected === 1 ? 1 : 0
        })
    }
    this.setState({
        areas : data
    });
};
onCheckAllChange = (indexs) => {
    const data = this.state.areas;
    let is_selected_all = data[indexs]['is_selected_all'];
    data[indexs]['is_selected_all'] = +is_selected_all === 0 ? 1 : 0;

    if(data[indexs]['is_selected_all']){
        data[indexs]['city'].map((item,index)=>{
            item.is_selected = 1
        })
    }else{
        data[indexs]['city'].map((item,index)=>{
            item.is_selected = 0
        })
    }
    this.setState({
        areas : data
    });
};

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值