此功能仍处于实验阶段。“Experimental”(实验性)意味着这是早期实现,可能会发生剧烈且破坏性的更改。

该组件充当包装器,控制要在 ToolsPanel 中显示的项目。如果项目被标记为默认控件,或者通过上下文提供的对应面板菜单项对此项目处于开启状态,则该项目将被显示。

用法

有关如何使用 ToolsPanelItem 的信息,请参阅 tools-panel/README.md#usage

属性

defaultShown: boolean

仅适用于可选项目,这决定了当 hasValue() 返回 false 时,项目是否在首次渲染时即显示。只要项目有值,它始终会显示,因此此属性仅控制没有值的项目的初始状态。

  • 是否必需:否
  • 默认值:false

hasValue: () => boolean

在构建 ToolsPanel 菜单时会调用此函数,以确定项目的初始选中状态。

  • 是否必需:是

isShownByDefault: boolean

此属性将当前项目标识为默认显示。这意味着无论其是否有设置的值或在面板菜单中是否被切换为开启,它都将显示。

  • 是否必需:否
  • 默认值:false

label: string

提供的标签具有双重用途。
它用作:

  1. 面板下拉菜单的人类可读标签
  2. 用于在面板的菜单上下文中定位相应项目的键,以确定是否应显示面板项目。

面板项目的 label 在单个面板内的所有项目中应是唯一的。

  • 是否必需:是

onDeselect: () => void

当此项目在 ToolsPanel 菜单中取消选中时调用。这通常用于重置面板控件的值。

  • 是否必需:否

onSelect: () => void

一个回调函数,用于在此项目在 ToolsPanel 菜单中被选中时执行操作。

  • 是否必需:否

onShownChange: ( isShown: boolean ) => void

当用户通过面板菜单显示或隐藏项目时执行的回调函数,显示时传递 true,隐藏时传递 false。

与 onDeselect 不同,无论项目是否有值,只要响应显式的菜单操作就会触发此回调。由其他原因引起的可见性变化不会触发它,例如项目因获得值而变得可见,或因设置了 defaultShown 而变得可见,或因运行“Reset all”(全部重置)而隐藏。

标记为 isShownByDefault 的项目始终可见,并且在切换关闭后仍保持可见,因此永远不会对它们调用此回调。

  • 是否必需:否

在 onShownChange、onSelect 和 onDeselect 之间进行选择

onSelect 和 onDeselect 保持不变,因此单个菜单操作可能会同时调用其中之一以及 onShownChange:

用户操作调用的回调函数
显示一个没有值的可选项目onShownChange( true ),onSelect
隐藏一个没有值的可选项目onShownChange( false )
隐藏一个有值的可选项目onShownChange( false ),onDeselect

使用 onShownChange 来跟踪或持久化用户是否希望项目可见,并使用 onDeselect 来重置控件的值。它们回答不同的问题,因此避免将相同的处理程序连接到两者,以免对同一个菜单操作处理两次。

panelId: string | null

面板项目将通过比较项目和面板本身上设置的 panelId 属性,或者如果 panelId 明确为 null,来确保它们仅向预期的面板注册。这允许从共享源注入项目。

  • 是否必需:否

resetAllFilter: ( attributes?: any ) => any

ToolsPanel 将收集每个项目的 resetAllFilter,并将这些函数的数组传递给面板的 resetAll 回调函数。然后可以遍历它们以执行其他任务。

  • 是否必需:否
  • 默认值:() => {}