2

我有一个块类型,它包含使用 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 块。

4

0 回答 0