I want to create a custom Gutenberg block with these features below

  • A parent container with repeated child component.
  • The repeated component can be added/removed(if existed before) as many times the user wants.
  • Will have an image upload option for each component

I can’t find the documentation for repeated components or any good code examples. I feel like this a very important part of block development as this kind of blocks are very common in most projects.
So, any code example/documentation or guidance is very much appreciated.

Example: Image Slider with a caption, Multiple ‘card’ like blocks inside a parent block.

1 Answer
1

I think the best way to approach this is by creating 2 blocks with a parent -> child relationship.

The child block would be a nested block only available within its parent block. Note the parent defined below.

registerBlockType( 'prefix/childblock', {
title: __( 'Inner Child Block' ), 
parent: ['prefix/parentblock'],

  attributes:{ ...//the rest of your block code continues

Then in the parent block you have innerblocks – where the child block can be added multiple times.

edit: props => {
    const { className } = props;
    return [
        <div className={className}>
            <InnerBlocks
                allowedBlocks={['prefix/childblock']}
            />
        </div>
    ];
},

Here’s a good post about how to do this in more depth

Leave a Reply

Your email address will not be published. Required fields are marked *