实现ant design的<Select>多选框组件中加上全选功能案例

3 篇文章 0 订阅
2 篇文章 0 订阅

本文用了是React+TypeScript+ant design的实例

多选框案例
通过 ant design select 属性Api 提供的 dropdownRender 完成
ant design select 地址
在这里插入图片描述
Select props 两个属性都会用到

属性说明
dropdownRender自定义下拉框内容
setFieldsValue设置表单的值

代码:

import React, {useState} from 'react'

const IndexView = ()=>{
	//表单数据
	const [form] = Form.useForm();
	//单选框状态
	const [selectState, setSelectState] = useState(false)
	//Option列表数据
	const data =[
  		{id:1,name:"首页"},
  		{id:2,name:"详情"},
  		{id:3,name:"账户"},
  		{id:4,name:"功能"},
	]
	
	return (
		{/* Form 表单 */}
		<Form
			form={form}
		>
		<Item rules={[{ required: true }]} label="功能列表" name="functionIds">
          <Select
            mode="multiple"
            style={{ width: '100%' }}
            placeholder="请选择功能列表"
            allowClear
            dropdownRender={allSelectValue => (
              <div>
                <div style={{ padding: '4px 8px 8px 8px', cursor: 'pointer' }}>
                  <Checkbox checked={selectState} onChange={(e) => {
                    // 判断 是否 选中
                    if(e.target.checked === true){
                      setSelectState(true) //选中时 给 checked 改变状态
                      // 当选的时候 把所有列表值赋值给functionIds
                      form.setFieldsValue({
                        functionIds:data?.map((item)=>item.id)//如果选中 给select 赋data里面所有的值
                      })
                    }else{
                      setSelectState(false)
                      form.setFieldsValue({
                        functionIds:[]//如果取消全选 这清空select全部选中状态
                      })
                    }
                  }}>全选</Checkbox>
                </div>
                <Divider style={{margin:'0'}}/>
                {/* Option 标签值 */}
                {allSelectValue}
              </div>
            )}
          >
            {data?.map((item) => (
              <Option key={item.id} value={item.id}>
                {item.name}
              </Option>
            ))}
          </Select>
        </Item>
		</Form>
	)
}

export default IndexView;
  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值