你的edit
函数只是缺少一个[
和]
, i、 e.您忘记实际返回数组,如下所示:
return ([ // add that [
<InspectorControls key="lx-authors-block-setting" style={ { marginBottom:\'40px\'} }>
...
</InspectorControls>,
<div className="lx-authors-block wp-block" key="container" style={{ backgroundColor: attributes.bgColor}}>
...
</div>
]); // and add that ]
或者您可以将元素包装成一个片段(
<>
和
</>
) 或
div
如果需要:
return (
<>
<InspectorControls key="lx-authors-block-setting" style={ { marginBottom:\'40px\'} }>
...
</InspectorControls>
<div className="lx-authors-block wp-block" key="container" style={{ backgroundColor: attributes.bgColor}}>
...
</div>
</>
);
根据您的回答更新,如@TomJNowell, 确实,您不应该手动添加wp-block
向您的div
(但我没有注意到您在那里添加了它,因此我在原始答案中没有提到它),而是因为您的块类型使用block API version 2 (请注意apiVersion: 2,
在代码中),您应该使用useBlockProps
以确保正确识别块包装器,并使用适当的类(如wp-block
.
但是,块编辑器手册stated 即:
如果元素包装器需要任何额外的自定义HTML属性,则需要将这些属性作为参数传递给useBlockProps
钩
因此{ ...useBlockProps() } className="lx-authors-block"
:
<div { ...useBlockProps() } className="lx-authors-block" key="editable" style={{ backgroundColor: attributes.bgColor}}>
你应该通过
className
作为
useBlockProps
挂钩:
<div { ...useBlockProps( {
className: \'lx-authors-block\',
key: \'editable\',
style: { backgroundColor: attributes.bgColor },
} ) }>
否则
div
实际上不会有
wp-block
除其他问题外
div
将在编辑器中显示全宽:
因此,请确保使用正确的语法和
return
代码应如下所示:
return ([
<InspectorControls key="lx-authors-block-setting" style={ { marginBottom:\'40px\'} }>
...
</InspectorControls>,
<div { ...useBlockProps( {
className: \'lx-authors-block\',
key: \'editable\',
style: { backgroundColor: attributes.bgColor },
} ) }>
...
</div>
]);
这样就可以得到正确的结果(注意块的宽度,它也是可聚焦的,例如,当你点击右上角的白色背景时):