我正在使用自定义图标按钮上的onClick操作,如下所示:
const { createHigherOrderComponent } = wp.compose;
const { Fragment } = wp.element;
const { BlockControls } = wp.editor;
const { Toolbar } = wp.components;
const { IconButton } = wp.components;
const withCollapseControl = createHigherOrderComponent( ( BlockEdit ) => {
return ( props ) =>
{
props.toggleBlockCollapse = (event) => {
props.setAttributes({
collapsed:!props.attributes.collapsed,
}
let iconProps = {
onClick: props.toggleBlockCollapse.bind(props),
class: "components-icon-button components-toolbar__control",
label: props.attributes.collapsed ? \'Collapse\' : \'Expand\',
icon: props.attributes.collapsed ? \'arrow-down\' : \'arrow-up\'
}
return (
<Fragment>
<BlockEdit { ...props } className=\'collapsed\'/>
<BlockControls>
<Toolbar>
<IconButton { ...iconProps } />
</Toolbar>
</BlockControls>
</Fragment>
);
};
}, "withCollapseControl" );
wp.hooks.addFilter( \'editor.BlockEdit\', \'my-plugin/with-inspector-controls\', withCollapseControl );
我似乎无法向BlockEdit组件添加/删除HTML/CSS类。我可以切换图标按钮,调用setAttributes会触发重新渲染。。。
我希望可以在这里模仿公认答案中的示例,但在我的BlockEdit组件上:Add classname to Gutenberg block wrapper in the editor?
深入研究之后,似乎className在BlockEdit组件上的可重写性可能与在BlockListBlock组件上的不一样。
也许最好的方法是尝试修改BlockListBlock组件的类,但我不确定如何将它们链接在一起,因此可能会寻找这样的解决方案。
谢谢
编辑:请注意,我在示例BlockEdit组件中硬编码了一个类名值,以演示在代码中的其他逻辑独立的情况下失败的地方(添加类名)。共享整个代码,以帮助回答者了解更广泛的背景和我的意图:)