ToolbarItem
— это универсальный компонент WordPress на базе React, который позволяет превращать любой пользовательский элемент в элемент панели инструментов (Toolbar
). Он отлично подходит для создания гибких элементов управления, таких как кнопки, меню и другие элементы, которые можно поместить в панель инструментов или группу инструментов.
Основные возможности ToolbarItem
- Гибкость: с помощью
ToolbarItem
можно превращать любые HTML-элементы или React-компоненты в элементы панели инструментов. - Совместимость с
Toolbar
иToolbarGroup
: рекомендуется использоватьToolbarItem
внутри компонентовToolbar
илиToolbarGroup
для создания структурированных интерфейсов. - Поддержка
BlockControls
: еслиToolbarItem
используется в создании элементов управления для пользовательского блока, лучше использовать его вместе сBlockControls
.
Использование свойства as
Свойство as
позволяет задать HTML-элемент или пользовательский компонент, который будет использоваться для ToolbarItem
. В этом примере мы создадим панель с двумя кнопками, определяя их с помощью свойства as
.
import { Toolbar, ToolbarItem, Button } from '@wordpress/components';
function CustomToolbar() {
return (
<Toolbar label="Настройки">
<ToolbarItem as={Button} onClick={() => console.log('Кнопка 1 нажата')}>
Я кнопка в панели инструментов
</ToolbarItem>
<ToolbarItem as="button" onClick={() => console.log('Кнопка 2 нажата')}>
Я другая кнопка в панели инструментов
</ToolbarItem>
</Toolbar>
);
}
Применение ToolbarItem
с функцией children
Свойство children
можно использовать как функцию, которая получает HTML-свойства ToolbarItem
. Эти свойства можно передать другому компоненту для создания более сложных интерфейсов. В примере ниже ToolbarItem
используется для создания меню с помощью компонента DropdownMenu
.
import { Toolbar, ToolbarItem, DropdownMenu } from '@wordpress/components';
import { table } from '@wordpress/icons';
function CustomToolbarWithMenu() {
return (
<Toolbar label="Опции">
<ToolbarItem>
{ (toolbarItemHTMLProps) => (
<DropdownMenu
icon={table}
toggleProps={toolbarItemHTMLProps}
label="Редактировать таблицу"
controls={[
{
title: 'Добавить строку',
onClick: () => console.log('Строка добавлена'),
},
{
title: 'Удалить строку',
onClick: () => console.log('Строка удалена'),
},
]}
/>
)}
</ToolbarItem>
</Toolbar>
);
}
Использование ToolbarItem
с BlockControls
Если вы создаете пользовательский блок и хотите добавить элементы управления на панель блока, рекомендуется использовать ToolbarItem
в сочетании с BlockControls
и, при необходимости, с ToolbarGroup
. В этом примере ToolbarItem
добавляется в блок с использованием BlockControls
.
import { BlockControls } from '@wordpress/block-editor';
import { ToolbarGroup, ToolbarItem, Button } from '@wordpress/components';
function EditBlock() {
return (
<BlockControls>
<ToolbarGroup>
<ToolbarItem as={Button} onClick={() => console.log('Кнопка блока нажата')}>
Кнопка блока
</ToolbarItem>
</ToolbarGroup>
</BlockControls>
);
}
Параметры компонента ToolbarItem
ToolbarItem
принимает ряд параметров, которые делают его универсальным и легко адаптируемым для различных элементов.
Свойство | Тип | Описание |
---|---|---|
as | React.ElementType | Указывает HTML-элемент или компонент, который будет отображаться в качестве элемента панели. |
children | (props) => ReactNode | Функция, которая получает HTML-свойства ToolbarItem и позволяет их передавать другому компоненту. |
Пример с изменением элемента через as
Вы можете использовать as
для отображения ToolbarItem
как ссылки, что будет полезно для реализации элементов навигации внутри панели инструментов.
import { Toolbar, ToolbarItem } from '@wordpress/components';
function NavigationToolbar() {
return (
<Toolbar label="Навигация">
<ToolbarItem as="a" href="#section1">
Перейти к секции 1
</ToolbarItem>
<ToolbarItem as="a" href="#section2">
Перейти к секции 2
</ToolbarItem>
</Toolbar>
);
}
Пример: использование ToolbarItem
для кастомного компонента
В этом примере мы создаем кастомный компонент CustomButton
, который будет использоваться в ToolbarItem
. Это позволяет создать уникальный вид кнопок в панели инструментов.
import { Toolbar, ToolbarItem } from '@wordpress/components';
function CustomButton({ label, onClick }) {
return (
<button className="custom-button" onClick={onClick}>
{label}
</button>
);
}
function CustomToolbarWithCustomButton() {
return (
<Toolbar label="Настройки">
<ToolbarItem as={CustomButton} label="Моя кнопка" onClick={() => console.log('Моя кнопка нажата')} />
</Toolbar>
);
}
Пример с добавлением иконки и настройкой параметров
Добавим параметр иконки к ToolbarItem
с использованием свойства children
для кастомного отображения. Это полезно для создания кнопок с иконками и текстом.
import { Toolbar, ToolbarItem } from '@wordpress/components';
import { edit } from '@wordpress/icons';
function IconButton({ icon, label, onClick }) {
return (
<button onClick={onClick} style={{ display: 'flex', alignItems: 'center' }}>
{icon}
<span style={{ marginLeft: '4px' }}>{label}</span>
</button>
);
}
function ToolbarWithIconButton() {
return (
<Toolbar label="Инструменты">
<ToolbarItem as={IconButton} icon={edit} label="Редактировать" onClick={() => console.log('Редактировать')} />
</Toolbar>
);
}
Заключение
Компонент ToolbarItem
в WordPress предоставляет гибкий способ создания пользовательских элементов в панели инструментов. Он идеально подходит для различных типов элементов управления, от простых кнопок до более сложных меню. Используя свойства as
и children
, разработчики могут легко создавать адаптируемые элементы интерфейса для нужд панелей инструментов в редакторе WordPress.