尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

RSUITE MultiCascader 默认值设置:defaultValue 用法与级联/非级联模式实战

发布时间:2026/9/29 2:35:05

资讯中心
01
ARTICLE

RSUITE MultiCascader 默认值设置:defaultValue 用法与级联/非级联模式实战

RSUITE MultiCascader 默认值设置:defaultValue 用法与级联/非级联模式实战
前端UI组件【免费下载链接】rsuite A suite of React components .项目地址https://gitcode.com/gh_mirrors/rs/rsuite点击查看免费下载导读本文聚焦 rsuite 的MultiCascader多选级联选择器组件如何通过defaultValue设置初始选中值并对比开启/关闭cascade级联模式时默认值的呈现差异。你将掌握defaultValue的传值规范数组、路径式 value、受控与非受控两种用法并结合仓库源码理解默认值如何在内部被级联补全处理以及文档示例所用的mockTreeData树数据生成方式可直接照搬到自己的项目中。defaultValue为多选级联器预设初始选中项MultiCascader是 rsuite 中用于从多级级联数据中选择多个值的组件支持多列面板逐层点选、多选复选框以及搜索。当表单需要回显历史数据或编辑场景需要预填已选项时defaultValue是最直接的入口——它只在首次渲染时生效之后组件进入非受控状态由用户操作维护内部值若希望外部完全接管值的变化则应改用valueonChange的受控写法。在 docs/pages/components/multi-cascader/fragments/default-value.md 中官方给出了完整的默认值示例import { MultiCascader } from rsuite; import { mockTreeData } from ./mock; const data mockTreeData({ limits: [3, 3, 4], labels: (layer, value, faker) { const methodName [jobArea, jobType, firstName]; return faker.person[methodName[layer]](); } }); const App () ( div pCascade:/p MultiCascader data{data} defaultValue{[1-1, 1-2, 2]} minw{224} / hr / pNot cascaded:/p MultiCascader data{data} defaultValue{[1-1, 1-2, 2]} cascade{false} minw{224} / /div ); ReactDOM.render(App /, document.getElementById(root));关键点拆解defaultValue必须是数组MultiCascaderProps继承自FormControlPickerPropsT[], ...即多选组件的值类型是数组元素是命中valueKey默认value的选项值。值采用路径式写法[1-1, 1-2, 2]中的1-1、1-2是根节点1下的子节点2是另一个根节点。这对应mockTreeData({ limits: [3, 3, 4] })生成的三层树结构——第一层 3 个节点值为1、2、3第二层每个节点 3 个子节点如1-1、1-2、1-3第三层每节点 4 个子节点如1-1-1…。minw{224}指定选择器最小宽度与文档其他示例中的w{224}类似用于固定弹层/触发器的宽度保证级联多列面板有足够的展示空间。级联模式cascade对默认值的影响开与关的差异示例中同一个defaultValue{[1-1, 1-2, 2]}在两种模式下呈现不同结果模式配置行为表现级联 Cascade默认cascade{true}MultiCascader defaultValue{[1-1, 1-2, 2]} /勾选子项会联动父节点当某父节点的所有可勾选子节点都被选中时父节点被自动补入选中集合反之当选中集合中存在父子关系时只保留叶子层级值避免冗余非级联 Not cascadedcascade{false}MultiCascader defaultValue{[1-1, 1-2, 2]} cascade{false} /各层级节点独立勾选选中集合与传入值一一对应不做父子联动源码原理useCascadeValue 的 transformValue 预处理从 src/MultiCascader/MultiCascader.tsx 可以看到组件内部通过useControlled(valueProp, defaultValue)将受控值与非受控默认值统一后交给useCascadeValue处理const [controlledValue] useControlled(valueProp, defaultValue); const cascadeValueProps { ...itemKeys, uncheckableItemValues, cascade, value: controlledValue, onCheck, onChange }; const { value, setValue, handleCheck } useCascadeValueT(cascadeValueProps, flattenData);核心逻辑位于 src/MultiCascadeTree/hooks/useCascadeValue.ts 的transformValueconst transformValue useCallback( (value: T[] []) { if (!cascade) { return value; } // ... 对每个值执行 splitValue(item, true, value) // 收集所有相关值自身、被补全的父节点、被剔除的子节点 // 最后过滤若某值的父节点也在 nextValue 中则删除该值只保留最顶层的值 return nextValue.filter(v { const item flattenData.find(n n[valueKey] v); if (item?.parent nextValue.some(v v item.parent?.[valueKey])) { return false; } return true; }); }, [cascade, flattenData, splitValue, valueKey] );由此可以推断出级联模式下defaultValue的实际渲染规则展开checked时补全父节点splitValue会遍历节点的所有祖先当某祖先的所有可勾选子节点均已选中时把该祖先的 value 一并加入src/MultiCascadeTree/hooks/useCascadeValue.ts同时用removeAllChildrenValue剔除该祖先之下的冗余子节点值。去重与顶层化最终uniq去重后凡是父节点也在集合中的值都会被过滤掉保证选中值集合始终是最精简的顶层选中集合。因此当cascade开启时即使defaultValue传入了同时包含父子节点的值最终onChange/ 渲染出的选中集合也会被规范化。而cascade{false}时transformValue直接原样返回传入数组handleCheck也仅做加一个/删一个的朴素处理src/MultiCascadeTree/hooks/useCascadeValue.ts不做任何父子联动。补充若设置了uncheckableItemValues不可勾选项级联补全会自动跳过这些不可勾选的值src/MultiCascadeTree/hooks/useCascadeValue.ts保证父节点补全判断只统计真正可勾选的子项。受控写法对照value onChange如果需要在运行时动态改变选中值例如切换cascade后清空选择、或表单重置应当使用受控模式。官方文档在 docs/pages/components/multi-cascader/fragments/controlled.md 和 docs/pages/components/multi-cascader/fragments/cascade.md 中给出了与默认值示例对称的写法const [value, setValue] React.useState([1-1, 1-2]); return MultiCascader value{value} onChange{setValue} data{data} minw{224} /;以及用Toggle实时切换级联模式、并清空已选值的完整示例const [cascade, setCascade] React.useState(true); const [value, setValue] React.useState([]); const handleToggle checked { setCascade(checked); setValue([]); }; MultiCascader w{280} data{data} value{value} cascade{cascade} onChange{setValue} /;两点实践建议defaultValue 与 value 二选一不要同时使用两者。useControlled以valueProp为优先两者同时传入时value会覆盖defaultValue的效果src/MultiCascader/MultiCascader.tsx。切换 cascade 时先清空值如handleToggle所示因为级联与非级联对父子值是否共存的语义不同直接沿用旧值可能出现预期外的补全/裁剪结果。示例数据从哪来mockTreeData 生成器default-value.md中的./mock即文档站公共工具 docs/utils/mock.ts 导出的mockTreeData其签名与行为如下export function mockTreeData(options: { limits: number[]; // 每层节点数量数组长度即树的深度 labels: string | string[] | ((layer, value, faker) string); // 节点文案 getRowData?: (layer: number, value: string) any[]; // 附加字段 })limits: [3, 3, 4]表示生成 3 层树第一层 3 个节点、第二层每个节点 3 个子节点、第三层每个节点 4 个子节点。节点value由父值拼接序号生成根节点为1、2、3其子节点为1-1、1-2…… 因此defaultValue{[1-1, 1-2, 2]}恰好命中第二层两个节点与第一层一个节点。labels支持函数按层级动态生成文案示例中按[jobArea, jobType, firstName]调用faker.person生成行业—职位—人名语义的树依赖faker-js/faker文档沙箱固定使用^8.0.1见 docs/utils/mock.ts。在你的真实项目中只需要保证data中每个选项含value与label字段childrenKey默认children、valueKey默认value、labelKey默认label均可通过 props 自定义见 src/MultiCascader/MultiCascader.tsxdefaultValue即可直接生效无需依赖 faker。小结三条可直接落地的经验传值形态defaultValue必须是值数组元素为valueKey对应的选项值给默认值使用路径式写法最直观例如[1-1, 1-2, 2]。级联语义默认cascade{true}时组件会基于useCascadeValue的transformValue对默认值做父节点补全 冗余子值裁剪的规范化cascade{false}时值保持原样、互不影响。模式选择静态回显用defaultValue非受控需要程序化改写值重置、联动清空、切换级联模式时改用valueonChange受控并在切换cascade时注意清空旧值。如果希望进一步了解多列级联面板、搜索视图或禁用项等细节可继续阅读 src/MultiCascader/MultiCascader.tsx 与同目录fragments/下的cascade.md、controlled.md、async.md、uncheckable.md等文档片段。赞分享前端UI组件【免费下载链接】rsuite A suite of React components .项目地址https://gitcode.com/gh_mirrors/rs/rsuite点击查看免费下载相关推荐rsuite MultiCascader 受控模式完全指南value、onChange 与级联值的正确用法rsuite MultiCascader 受控模式完全指南value、onChange 与级联值的正确用法 导读 MultiCascader 是 rsuite前端UI组件rsuite MultiCascader 撑满模式block用法详解块级级联多选器实战指南rsuite MultiCascader 撑满模式block用法详解块级级联多选器实战指南 本篇技术指南围绕 rsuite 组件库中 MultiCasca前端UI组件Ant Design Cascader 级联选择器 defaultValue 默认值使用指南Ant Design Cascader 级联选择器 defaultValue 默认值使用指南 级联选择Cascader是 Ant Design 表单类组件中UI组件前端设计系统上一篇uWebSockets容器健康检查成功率监控告警与指标下一篇如何快速掌握Silero VAD企业级语音活动检测的完整教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。