我正在使用块API中的过滤器将类名添加到块的包装器中。我必须将类名添加到特定块,而不是所有块。
我试过:
const addClassName = createHigherOrderComponent( ( BlockListBlock ) => {
return ( props, blockType ) => {
if ( blockType.name === \'myplugin/myblock\' ) {
return <BlockListBlock { ...props } className="test" />;
}
return <BlockListBlock { ...props } />
}
}, \'addClassName\' );
wp.hooks.addFilter( \'editor.BlockListBlock\', \'myplugin/add-class-name\', addClassName );
问题:
blockType.name
返回未定义的。我也试过了
getBlockType.name
它还返回未定义的。我还尝试获取核心块的块名。例如
core/columns
.
最合适的回答,由SO网友:Alvaro 整理而成
从props对象可以获得块信息。对象包含name
您正在寻找的财产;代码如下:
const addClassName = createHigherOrderComponent(BlockListBlock => {
return props => {
if (props.name === "myplugin/myblock") {
return <BlockListBlock {...props} className="test" />;
}
return <BlockListBlock {...props} />;
};
}, "addClassName");
wp.hooks.addFilter(
"editor.BlockListBlock",
"myplugin/add-class-name",
addClassName
);
SO网友:Michel Moraes
您可以简单地使用wp data api获得块的默认类名,如下所示:
const className = getBlockDefaultClassName("namespace/yourblockname");
getBlockDefaultClassName 来自
wp.blocks 因此,您可以导入它:
import { getBlockDefaultClassName } from "@wordpress/blocks";
或
const { getBlockDefaultClassName } = wp.blocks;
希望有帮助!