为什么 ComboBox 不够用

你在构建业务应用程序。你在反复解决同样的问题。

你在构建客户搜索功能。 你在构建产品自动完成字段。 你在构建选择弹出框。

大多数 UI 库将这些视为独立的组件。它们称之为查找 (lookups) 或自动完成框 (autocomplete boxes)。这是一个错误。

这些并不是不同的问题。它们是同一个问题。我将这个概念称为 Locator。

业务应用程序依赖于引用。

  • 销售订单引用客户。
  • 发票引用供应商。
  • 交易引用产品。

数据库将这些存储为 ID。用户不会用 ID 来思考。用户思考的是名称、代码或条形码。

真正的问题不在于你如何存储 ID。问题在于用户如何利用他们已知的信息找到正确的实体。

ComboBox 适用于小型列表。可以用它来处理国家或货币。这些列表只有几十行。

ComboBox 在大型数据集面前会失效。你无法滚动浏览 100,000 个客户。在这种规模下,你不再是从列表中进行选择,而是在定位一条记录。

Locator 不是一个 UI 控件。它是一种行为。

Locator 的作用不仅仅是返回一个值。它还负责解析业务引用。

当用户选择一个产品时,应用程序需要的不仅仅是一个 ProductId。它还需要单价、增值税率 (VAT rate) 以及计量单位。

Locator 通过在特定上下文中解析引用来提供所有这些信息。

UI 可能会发生变化:

  • 在桌面端,它看起来像是两个可搜索的字段。
  • 在网格 (grid) 中,它看起来像是一个自定义编辑器。
  • 在移动端,它看起来像是一个搜索界面。

外观在变,但行为保持不变。

一个优秀的 Locator 会尊重用户。经验丰富的用户会使用键盘。如果 Locator 找到了唯一的匹配项,它应该立即完成选择。只有在存在多个匹配项时,它才应该要求用户进行选择。

停止将搜索、自动完成和弹出框视为互不相关的组件。请将 Locator 视为业务软件的一个基本概念。

来源:https://dev.to/tbebekis/-fundamental-concepts-of-business-applications-i-why-a-combobox-is-not-enough-pb4