ToolbarItem 是一个通用的无头组件,用于将自定义组件或 HTML 元素转换为工具栏项。它通常放置在 Toolbar 或 ToolbarGroup 中,用于构建通用界面;在自定义块中添加控件时,建议使用 BlockControls。
import { Toolbar, ToolbarItem, Button } from '@wordpress/components';
function MyToolbar() {
return (
<Toolbar label="Options">
<ToolbarItem as={ Button }>I am a toolbar button</ToolbarItem>
<ToolbarItem as="button">I am another toolbar button</ToolbarItem>
</Toolbar>
);
}import { Toolbar, ToolbarItem, DropdownMenu } from '@wordpress/components';
import { table } from '@wordpress/icons';
function MyToolbar() {
return (
<Toolbar label="Options">
<ToolbarItem>
{ ( toolbarItemHTMLProps ) => (
<DropdownMenu
icon={ table }
toggleProps={ toolbarItemHTMLProps }
label={ 'Edit table' }
controls={ [] }
/>
) }
</ToolbarItem>
</Toolbar>
);
}import { BlockControls } from '@wordpress/block-editor';
import { ToolbarGroup, ToolbarItem, Button } from '@wordpress/components';
function Edit() {
return (
<BlockControls>
<ToolbarGroup>
<ToolbarItem as={ Button }>I am a toolbar button</ToolbarItem>
</ToolbarGroup>
</BlockControls>
);
}A ToolbarItem is a generic headless component that can be used to make any custom component a Toolbar item. It should be inside a Toolbar or ToolbarGroup when used to create general interfaces. If you’re using it to add controls to your custom block, you should consider using BlockControls.
as propYou can use the as prop with a custom component or any HTML element.
import { Toolbar, ToolbarItem, Button } from '@wordpress/components';
function MyToolbar() {
return (
<Toolbar label="Options">
<ToolbarItem as={ Button }>I am a toolbar button</ToolbarItem>
<ToolbarItem as="button">I am another toolbar button</ToolbarItem>
</Toolbar>
);
}
You can pass children as function to get the ToolbarItem props and pass them to another component.
import { Toolbar, ToolbarItem, DropdownMenu } from '@wordpress/components';
import { table } from '@wordpress/icons';
function MyToolbar() {
return (
<Toolbar label="Options">
<ToolbarItem>
{ ( toolbarItemHTMLProps ) => (
<DropdownMenu
icon={ table }
toggleProps={ toolbarItemHTMLProps }
label={ 'Edit table' }
controls={ [] }
/>
) }
</ToolbarItem>
</Toolbar>
);
}
If you’re working on a custom block and you want to add controls to the block toolbar, you should use BlockControls instead. Optionally wrapping it with ToolbarGroup.
import { BlockControls } from '@wordpress/block-editor';
import { ToolbarGroup, ToolbarItem, Button } from '@wordpress/components';
function Edit() {
return (
<BlockControls>
<ToolbarGroup>
<ToolbarItem as={ Button }>I am a toolbar button</ToolbarItem>
</ToolbarGroup>
</BlockControls>
);
}