Компонент MenuGroup
в WordPress предоставляет удобный способ организовать связанные элементы меню (MenuItem
) в единую группу. Он особенно полезен для группировки настроек и других связанных элементов, а также помогает структурировать длинные списки меню для улучшения их восприятия. В этой статье мы подробно рассмотрим все параметры компонента MenuGroup
, а также приведем уникальные примеры его использования.
Основные Возможности Компонента MenuGroup
Компонент MenuGroup
добавляет контейнер, обрамляющий несколько элементов MenuItem
, чтобы они выглядели как единое целое. MenuGroup
также поддерживает добавление метки (label) и автоматическое отображение разделительных линий для визуального отделения от других элементов.
Импорт компонента MenuGroup
import { MenuGroup, MenuItem } from '@wordpress/components';
Пример базового использования MenuGroup
Простой пример компонента MenuGroup
с двумя элементами MenuItem
, сгруппированными под заголовком «Настройки».
const BasicMenuGroupExample = () => (
<MenuGroup label="Настройки">
<MenuItem>Параметр 1</MenuItem>
<MenuItem>Параметр 2</MenuItem>
</MenuGroup>
);
В этом примере MenuGroup
отображает два пункта меню под общим заголовком. Это делает элементы более логично организованными и улучшает их восприятие.
Параметры Компонента MenuGroup
Рассмотрим основные параметры MenuGroup
и их настройки.
- label
Текстовый заголовок, отображаемый над элементамиMenuItem
внутриMenuGroup
. Используется для описания содержимого группы и помогает пользователю быстро понять, что представляют элементы внутри.- Тип:
String
- Обязательный: Нет
- Тип:
const LabeledMenuGroupExample = () => (
<MenuGroup label="Настройки профиля">
<MenuItem>Изменить имя</MenuItem>
<MenuItem>Обновить фото профиля</MenuItem>
</MenuGroup>
);
В этом примере метка Настройки профиля
позволяет пользователю быстро понять, что элементы внутри MenuGroup
относятся к настройкам профиля.
- children
Этот параметр принимает дочерние элементы, которые будут сгруппированы внутриMenuGroup
. Обычно это один или несколько компонентовMenuItem
, но могут быть и другие компоненты для расширенной функциональности.- Тип:
ReactNode
- Обязательный: Да
- Тип:
const ComplexMenuGroupExample = () => (
<MenuGroup label="Управление доступом">
<MenuItem>Пользователи</MenuItem>
<MenuItem>Роли</MenuItem>
<MenuItem>Разрешения</MenuItem>
</MenuGroup>
);
Пример 1: Группировка Меню с Разделителями
При наличии нескольких MenuGroup
, каждый из которых относится к разным категориям, для лучшего восприятия можно добавить разделители между группами.
const MultipleMenuGroupsExample = () => (
<div>
<MenuGroup label="Общие Настройки">
<MenuItem>Язык</MenuItem>
<MenuItem>Часовой пояс</MenuItem>
</MenuGroup>
<MenuGroup label="Настройки Безопасности">
<MenuItem>Смена пароля</MenuItem>
<MenuItem>Двухфакторная аутентификация</MenuItem>
</MenuGroup>
</div>
);
В этом примере два MenuGroup
представляют разные группы настроек с разделением для удобного восприятия.
Пример 2: Группировка Опций в Меню с Выбором
Для переключения между опциями можно использовать компонент MenuItemsChoice
внутри MenuGroup
, что позволяет пользователю выбирать один из вариантов.
import { MenuGroup, MenuItemsChoice } from '@wordpress/components';
const ChoiceMenuGroupExample = () => (
<MenuGroup label="Выбор темы оформления">
<MenuItemsChoice
choices={ [
{ value: 'light', label: 'Светлая тема' },
{ value: 'dark', label: 'Темная тема' },
] }
onSelect={ (value) => console.log(`Выбрана тема: ${value}`) }
/>
</MenuGroup>
);
В этом примере MenuItemsChoice
внутри MenuGroup
позволяет пользователю выбрать тему оформления, и выбранное значение передается в консоль.
Пример 3: Динамическое Создание Групп Меню
Можно также динамически создавать группы меню, основываясь на массиве данных. Это полезно для создания меню с большим количеством опций.
const settings = [
{ label: 'Общие', items: ['Уведомления', 'Язык'] },
{ label: 'Пользовательские', items: ['Изменить имя', 'Изменить аватар'] },
];
const DynamicMenuGroupExample = () => (
<div>
{settings.map((group, index) => (
<MenuGroup label={group.label} key={index}>
{group.items.map((item, itemIndex) => (
<MenuItem key={itemIndex}>{item}</MenuItem>
))}
</MenuGroup>
))}
</div>
);
Этот пример показывает, как можно создать MenuGroup
с динамическими данными, например, на основе данных, полученных с сервера.
Советы по Использованию MenuGroup
- Используйте четкие метки: Метки должны быть краткими, но четко указывать на содержимое группы.
- Разделяйте категории с помощью нескольких групп: Если меню содержит множество пунктов, используйте несколько
MenuGroup
для разделения на логические блоки. - Добавьте
MenuGroup
вDropDownMenu
для полнофункционального выпадающего меню: В качестве контейнера дляMenuGroup
можно использовать компонентDropDownMenu
, что обеспечит интерактивный интерфейс для пользователя.
Заключение
Компонент MenuGroup
в WordPress является отличным инструментом для организации связанных элементов меню. Он делает интерфейс более удобным и помогает пользователю ориентироваться в настройках и параметрах. Благодаря параметрам, таким как label
и children
, MenuGroup
предоставляет высокую степень гибкости в создании интуитивных и структурированных меню.