react antd-design Select全选功能实例

 更新时间:2024年03月22日 09:43:40   作者:热爱前端的小君同学  
这篇文章主要介绍了react antd-design Select全选功能实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

react antd-design Select全选功能

效果一

完整代码

import { useEffect, useState, useRef } from 'react'
import { Button, message, Select, Checkbox } from 'antd'
import ProTable from '@ant-design/pro-table';
 
const { Option } = Select;
 
const initialParams = {
  tradeWay: ['1', '2', '3', '4', '5']
}
 
const tradeList = [
  { label: '微信', value: '1' },
  { label: '支付宝', value: '2' },
  { label: '银行卡', value: '3' },
  { label: '银联二维码', value: '4' },
  { label: '数字货币', value: '5' }
]
 
const Index = () => {
  const formRef = useRef()
  const [selectState, setCheckStatus] = useState(true)
  const [selectList, setSelectList] = useState(['1', '2', '3', '4', '5'])
 
  const columns = [
    {
      title: '交易方式',
      dataIndex: 'tradeWay',
      width: 180,
      initialValue: ['1', '2', '3', '4', '5'],
      valueEnum: tradeValue,
      renderFormItem: () => (
        <Select
          mode="multiple"
          onChange={value => {
            setSelectList(value)
            if (formRef.current) {
              formRef.current.setFieldsValue({ tradeWay: value })
            }
          }}
          dropdownRender={allSelectValue => (
            <div>
              <div style={{ padding: '4px 8px 8px 8px', cursor: 'pointer' }}>
                <Checkbox
                  checked={selectState && selectList?.length === tradeList?.length}
                  onChange={e => {
                    if (e.target.checked === true) {
                      setCheckStatus(true) //选中时 给 checked 改变状态
                      setSelectList(['1', '2', '3', '4', '5'])
                      // 当选的时候 把所有列表值赋值给tradeWay
                      if (formRef.current) {
                        formRef.current.setFieldsValue({
                          tradeWay: tradeList?.map(item => item.value)
                        })
                      }
                    } else {
                      setCheckStatus(false)
                      setSelectList([])
                      if (formRef.current) {
                        formRef.current.setFieldsValue({ tradeWay: [] })
                      }
                    }
                  }}
                >
                  全部
                </Checkbox>
              </div>
              {/* Option 标签值 */}
              {allSelectValue}
            </div>
          )}
        >
          {tradeList?.map(item => (
            <Option key={item.value} value={item.value}>
              {item.label}
            </Option>
          ))}
        </Select>
      )
    },
  ]
 
  return (
      <ProTable
        formRef={formRef}
        rowKey="id"
        toolBarRender={null}
        onSubmit={...}
        onReset={...}
        manualRequest
        request={params => {
          ...
        }}
        columns={columns}
      />
  )
}
 
export default Index

效果二

import { Cascader } from 'antd';
 
//正常而言级联选择还存在children属性,且值为Array格式
//我们只是想单纯一列下拉多选带勾选框,所以把children属性去掉即可
const options = [
  {
    label: 'test1',
    value: 'test1', 
  },
  {
    label: 'test2',
    value: 'test2',
  },
  {
    label: 'test3',
    value: 'test3',
  },
];
 
const onChange = (value) => {
  console.log(value);
}
//然后直接使用就好了
 
<Cascader
    options={options}
    onChange={onChange}
    multiple
    allowClear
    maxTagCount={1} //表示只需要显示一个Tag,可以不用此属性
/>,

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 解决React报错Property 'X' does not exist on type 'HTMLElement'

    解决React报错Property 'X' does not 

    这篇文章主要为大家介绍了解决React报错Property 'X' does not exist on type 'HTMLElement',有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • React State状态与生命周期的实现方法

    React State状态与生命周期的实现方法

    这篇文章主要介绍了React State状态与生命周期的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • React中useRef的具体使用

    React中useRef的具体使用

    这篇文章主要介绍了React中useRef的具体使用,它可以用来获取组件实例对象或者是DOM对象,除此之外还有哪些用法,就一起来了解一下
    2021-04-04
  • React redux 原理及使用详解

    React redux 原理及使用详解

    这篇文章主要为大家介绍了React redux 原理及使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • React实现菜单栏滚动功能

    React实现菜单栏滚动功能

    本文将会基于react实现滚动菜单栏功能,点击菜单,内容区域会自动滚动到对应卡片,内容区域滑动,指定菜单栏会被选中,代码简单易懂,感兴趣的朋友一起看看吧
    2024-03-03
  • React+EggJs实现断点续传的示例代码

    React+EggJs实现断点续传的示例代码

    这篇文章主要介绍了React+EggJs实现断点续传的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 关于getDerivedStateFromProps填坑记录

    关于getDerivedStateFromProps填坑记录

    这篇文章主要介绍了关于getDerivedStateFromProps填坑记录,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Electron整合React使用搭建开发环境的步骤详解

    Electron整合React使用搭建开发环境的步骤详解

    这篇文章主要介绍了Electron整合React使用搭建开发环境,本文分步骤给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2020-06-06
  • 减少react组件不必要的重新渲染实现方法

    减少react组件不必要的重新渲染实现方法

    这篇文章主要为大家介绍了减少react组件不必要的重新渲染实现方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • ReactJS实现表单的单选多选和反选的示例

    ReactJS实现表单的单选多选和反选的示例

    本篇文章主要介绍了ReactJS实现表单的单选多选和反选的示例,非常具有实用价值,需要的朋友可以参考下
    2017-10-10

最新评论