其他
在 Mantine 中需要自定义下拉/选择/自动完成/多选时…
在 Mantine 项目里,用 Combobox 底层原语实现可搜索下拉、多选、标签输入、自定义选项渲染与过滤逻辑。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 35/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 39/100 ×0.15
适用场景
在 Mantine 中需要自定义下拉/选特定
解决思路
- 用 `useCombobox` 创建 store,并传入 `onDropdownClose: () => combobox.resetSelectedOption()` 和 `onDropdownOpen: () => combobox.selectFirstOption()`。
- 用 `<Combobox store={combobox} onOptionSubmit={handleSubmit}>` 包裹整个组件。
- 在 `<Combobox.Target>` 中放入 `InputBase`,设置 `component="button"`、`pointer`、`rightSection={<Combobox.Chevron />}`,并在 `onClick` 中调用 `combobox.toggleDropdown()` 打开或关闭下拉框。
- 在 `InputBase` 内显示当前值 `value`;没有值时显示 `<Input.Placeholder>Pick value</Input.Placeholder>`。
- 在 `<Combobox.Dropdown>` 内使用 `<Combobox.Options>`,遍历 `options`,为每项渲染 `<Combobox.Option value={item} key={item}>{item}</Combobox.Option>`。
- 实现 `handleSubmit(val)`:调用 `setValue(val)` 更新选中值,再调用 `combobox.closeDropdown()` 关闭下拉框。
- 按触发器类型选择 Target:无文本输入的按钮触发器用 `<Combobox.Target targetType="button">`。
- 输入框触发器用默认 `<Combobox.Target>`。
- 多选 pills 加独立输入框用 `<Combobox.DropdownTarget>` + `<Combobox.EventsTarget>`。
- 查阅 `references/api.md` 获取完整 API:`useCombobox` options 和 store、所有子组件 props、CSS variables、Styles API selectors。
- 查阅 `references/patterns.md` 获取代码示例:可搜索 select、带 pills 的多选、分组、自定义渲染、清除按钮、表单集成。
适用边界 · 注意事项
- 可直接使用 Mantine 内置 Select、Autocomplete、TagsInput 满足需求时,不必使用 Combobox 原语。
- 非 Mantine 项目或未安装 Mantine 时无法直接使用。
- 仅需普通原生 select 或非 select-like UI 时,不适用。