编辑器中的古腾堡 InnerBlocks.Content

Gutenberg InnerBlocks.Content in Editor

我有一个使用 <InnerBlocks /> 的块。我知道我可以在后端导入 InnerBlocks 组件,它会在我的块之上呈现一个块编辑器。在我的块的 save 函数中,我可以使用 <InnerBlocks.Content /> 它只会呈现块的内容。

我的目标是 <InnerBlocks.Content /> 即在后端也有内部块的不可编辑版本。它是我的块的一种状态,它将在其中预览已编辑的设置。我可以使用

<InnerBlocks templateLock="all" /> 

删除编辑器中的所有插入点,使其无法添加新块。但是现有的内部块仍然是可编辑的。是否有块属性或编辑器设置来完全禁用某些块的编辑?或者我可以通过其他方式实现我的目标吗?

不同的问题:如何在编辑器中获取和显示任何块(包含内部块的内容)的内容?

您场景中块的当前行为是预期的行为。您可以限制用户在块中进行更改意味着 adding/removing 个块,但块本身及其子块将保持可配置意味着更改颜色、字体大小等

您可以使用 Block Filters 来更改块的默认值,这与 WordPress 挂钩的概念相同。虽然您可以通过使用它来更改核心块的行为,但我不建议这样做,因为它会引入复杂性或会影响依赖于这些的其他块(即插件块,如 WooCommerce)。我更愿意在您的场景中开发自定义块,在其中我可以使用任何属性值显示或隐藏内部块。

如果您有兴趣为 Gutenberg 做贡献,那么我认为这将是对当前区块的一个很好的补充。