新闻详情

新闻详情

首页 / 资讯中心 / 详情

rsuite CheckPicker renderExtraFooter 实战:自定义底部全选工具栏

发布时间:2026/11/12 23:52:07来源:尧图网络
rsuite CheckPicker renderExtraFooter 实战:自定义底部全选工具栏
前端UI组件【免费下载链接】rsuite A suite of React components .项目地址https://gitcode.com/gh_mirrors/rs/rsuite点击查看免费下载renderExtraFooter是 rsuiteCheckPicker提供的弹层底部自定义插槽用于在选项列表下方渲染任意内容最常见的场景是在多选下拉中内置「全选 / 取消全选」与「确定关闭」操作。本文以 extra-footer.md 中的完整示例为骨架结合 CheckPicker.tsx 与 PickerPopup.tsx 的源码实现讲解如何用受控值 Checkbox半选状态 Button构建一个可复用的全选底部工具栏并给出可复制运行的完整代码。一、renderExtraFooter 是什么从 CheckPicker 属性表 可以看到renderExtraFooter的类型签名为renderExtraFooter?: () ReactNode它接收一个返回ReactNode的函数渲染位置在弹层Popup的列表listbox之后。查看 CheckPicker.tsx 中renderPopup的实现弹层结构依次为搜索框searchable开启时渲染SearchBox选项列表可被renderListbox替换renderExtraFooter?.()—— 底部自定义区域。也就是说底部工具栏始终固定在弹层最下方、选项列表之外不随列表滚动天然适合放置全选、确定、清空等操作按钮。二、完整示例全选 确定 的底部工具栏以下代码即 extra-footer.md 中的核心示例可直接复制运行import { CheckPicker, Checkbox, Button, HStack } from rsuite; const data [Eugenia, Bryan, Linda, Nancy, Lloyd, Alice, Julia, Albert].map( item ({ label: item, value: item }) ); const allValue data.map(item item.value); const App () { const picker React.useRef(); const [value, setValue] React.useState([]); const handleChange value { setValue(value); }; const handleCheckAll (value, checked) { setValue(checked ? allValue : []); }; return ( div classNameexample-item CheckPicker data{data} placeholderSelect ref{picker} w{224} value{value} onChange{handleChange} renderExtraFooter{() ( HStack justifyContentspace-between px{12} py{4} bdt1px solid var(--rs-border-primary) Checkbox indeterminate{value.length 0 value.length allValue.length} checked{value.length allValue.length} onChange{handleCheckAll} Check all /Checkbox Button appearanceprimary sizesm onClick{() { picker.current.close(); }} Ok /Button /HStack )} / /div ); }; ReactDOM.render(App /, document.getElementById(root));示例基于 8 条人员数据Eugenia、Bryan、Linda、Nancy、Lloyd、Alice、Julia、Albertdata被映射为{ label, value }结构——这正是 CheckPicker 默认读取的labelKey与valueKey默认值均为label/value见 CheckPicker.tsx。三、核心实现要点拆解3.1 受控 value 驱动全选逻辑示例使用useState管理value并通过value/onChange将 CheckPicker 变为受控组件handleChange把选择结果写回 statehandleCheckAll(value, checked)根据checked布尔值一键写入allValue全选或[]清空。allValue由data.map(item item.value)预先计算与数据源保持一致。从源码看CheckPicker 内部通过useControlled(valueProp, defaultValue || [])CheckPicker.tsx同步受控值用户每勾选一项都会触发handleItemSelect→setValue→handleChangeValue→onChangeCheckPicker.tsx因此 footer 中的value永远是最新的选择状态。3.2 用 indeterminate 表达「部分选中」Checkbox的选中状态分三档checked{value.length allValue.length}全部选中时勾选indeterminate{value.length 0 value.length allValue.length}选中一部分时显示半选横线两者都为false未选中任何项。查看 Checkbox.tsxindeterminate会通过useIndeterminateCheckbox钩子反射到原生 input 的indeterminate属性同时aria-checked被置为mixedCheckbox.tsx保证无障碍语义正确。3.3 通过 ref 调用 close 关闭弹层ref{picker}拿到的是 CheckPicker 的实例句柄PickerHandle点击「Ok」按钮时调用picker.current.close()直接关闭弹层。这一能力来自 Picker 内部统一的 PickerHandle 接口由usePickerRef组装而成CheckPicker.tsx。3.4 HStack 快速布局底部工具栏使用HStack做横向布局justifyContentspace-between左「全选」、右「Ok」两端对齐px{12} py{4}内边距bdt1px solid var(--rs-border-primary)顶部 1px 边框与弹层视觉分隔颜色取 rsuite 主题变量--rs-border-primary可随主题自动切换。HStack是 rsuite 基于 Flexbox 的快速布局组件Stack.tsxpx/py/bdt这类简写样式属性来自其继承的Box能力无需手写内联样式或额外 CSS 类。四、与文档其它入口的组合使用renderExtraFooter与 CheckPicker 的其他能力天然兼容常见组合包括场景组合方式大数据量全选开启virtualized虚拟列表见 virtualized.mdfooter 中的全选不受列表渲染性能影响分类选择设置groupBy分组后见 group.md可在 footer 追加「清空已选」按钮异步加载结合 async.mdfooter 可放置「刷新数据」操作受控场景参见 controlled.mdfooter 内按钮同样能调用setValue干预受控值五、无障碍与键盘交互给底部工具栏加功能时不要破坏 CheckPicker 已有的无障碍约定详见 en-US/index.md弹层本体是combobox选项列表为listbox带aria-multiselectabletrueCheckbox的indeterminate状态会自动输出aria-checkedmixed键盘支持↓/↑移动焦点、Enter选中、Esc关闭列表footer 内的Button保持原生可聚焦不影响现有键盘操作链路。六、小结renderExtraFooter让 CheckPicker 的多选体验从「选完手动点外部按钮」升级为「弹层内一站式完成全选与确认」。实现时只需记住三个关键点保持受控valueonChange让 footer 内组件与选项列表共享同一份选择状态三档勾选用checked/indeterminate表达全选、半选、未选三种状态ref 收尾通过picker.current.close()让「Ok」按钮完成确认并关闭弹层。该模式同样适用于SelectPicker、TreePicker、CheckTreePicker等同样支持renderExtraFooter的 Picker 组件族一处掌握、处处复用。赞分享前端UI组件【免费下载链接】rsuite A suite of React components .项目地址https://gitcode.com/gh_mirrors/rs/rsuite点击查看免费下载相关推荐rsuite CheckTreePicker 自定义页脚renderExtraFooter实战指南实现全选与批量操作rsuite CheckTreePicker 自定义页脚renderExtraFooter实战指南实现全选与批量操作 导读 在 rsuite 的树形多选选前端UI组件v-viewer底部工具栏按钮自定义指南v viewer底部工具栏按钮自定义指南 v viewer作为一款基于Viewer.js的Vue图片查看器组件提供了丰富的图片查看和操作功能。其中底部工具栏的前端UI组件rsuite CheckPicker 虚拟列表virtualized实战万级选项下的多选下拉性能优化指南rsuite CheckPicker 虚拟列表virtualized实战万级选项下的多选下拉性能优化指南 CheckPicker 是 rsuite 提供的前端UI组件上一篇Open Design开源AI设计革命如何用259技能打造专业级设计原型下一篇TeslaMate 中文完整指南3步切换语言翻译贡献全流程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/11 13:52:51

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/10 19:42:40

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/12 9:50:02

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/12 9:25:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/12 15:57:44

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/10 17:14:10

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉