我有一个块类型,它包含使用 InnerBlocks 的其他块,输出由 InnerBlocks 模板生成(类似于列核心块)。我希望能够将其中一个块更改为另一种块类型(定义了转换的块类型),但是当我这样做时,内容会被删除。
有没有办法做到这一点?
以此类推,如果核心列块有子块“第三列”和“半列”,是否有一种方法可以将两个“半列”变为三个“列-三分之一”而没有丢失数据?
为了扩展上面的类比,假设我复制了核心列和列块,我修改了列块,如下所示:
模板生成功能:
var childBlockName = 'core/column';
const getColumnsTemplate = memoize( ( columns ) => {
return times( columns, () => [ childBlockName ] );
} );
和编辑功能中的 RangeControl:
<RangeControl
label={ __( 'Columns' ) }
value={ columns }
onChange={ ( nextColumns ) => {
childBlockName = 'coreclone/column';
setAttributes( {
columns: nextColumns,
} );
} }
min={ 2 }
max={ 6 }
/>
core/column 和 coreclone/column 是相同的。在此示例中,当我更改列数时,模板中的子块类型会更改。核心/列块不会转换为核心克隆/列块,它们只会被擦除并制作新的核心克隆/列块。我希望它们在不擦除内容的情况下转换为 coreclone/column 块。