此功能仍处于实验阶段。“Experimental”(实验性)意味着这是早期实现,可能会发生剧烈且破坏性的更改。
该组件充当包装器,控制要在 ToolsPanel 中显示的项目。如果项目被标记为默认控件,或者通过上下文提供的对应面板菜单项对此项目处于开启状态,则该项目将被显示。
用法
有关如何使用 ToolsPanelItem 的信息,请参阅 tools-panel/README.md#usage
属性
defaultShown: boolean
仅适用于可选项目,这决定了当 hasValue() 返回 false 时,项目是否在首次渲染时即显示。只要项目有值,它始终会显示,因此此属性仅控制没有值的项目的初始状态。
- 是否必需:否
- 默认值:
false
hasValue: () => boolean
在构建 ToolsPanel 菜单时会调用此函数,以确定项目的初始选中状态。
- 是否必需:是
isShownByDefault: boolean
此属性将当前项目标识为默认显示。这意味着无论其是否有设置的值或在面板菜单中是否被切换为开启,它都将显示。
- 是否必需:否
- 默认值:
false
label: string
提供的标签具有双重用途。
它用作:
- 面板下拉菜单的人类可读标签
- 用于在面板的菜单上下文中定位相应项目的键,以确定是否应显示面板项目。
面板项目的 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 回调函数。然后可以遍历它们以执行其他任务。
- 是否必需:否
- 默认值:
() => {}