Я только вхожу в Гутенберг и особенно в InnerBlocks. То, что я пытаюсь достичь - это форма общения между родительскими и внутренними блоками. Я бы, например, люблю отображать, сколько внутренних блоков создано в родительском блоке
//registering Blocks
registerBlockType( 'xxx/outer-block', {
...
} );
registerBlockType( 'xxx/inner-block', {
...
parent: [ 'xxx/outer-block' ],
...
} );
Из функции редактирования внешнего блока
edit: ( { attributes, setAttributes, className, isSelected } ) => {
return (
<div className={ className }>
<p>There are { innerBlockCount } innerBlocks</p>
<p>One of the inner blocks is selected: { isInnerBlockSelected }</p>
<InnerBlocks />
</div>
);
Мне удалось получить innerBlockCount
с функцией wordpress withSelect
следующим образом:
export default compose( [
withSelect( ( select, ownProps ) => {
const blocks = select( 'core/editor' ).getBlocksByClientId( ownProps.clientId );
const innerBlocks = blocks.length ? blocks[ 0 ].innerBlocks : [];
return {
innerBlocks: innerBlocks,
innerBlocks: select( 'core/editor' ).getBlocks( ownProps.clientId ),
innerBlocksCount: innerBlocks.length,
};
} ),
withNotices,
] )( OuterBlock );
Но мне трудно сообщить внешнему блоку, когда выбран один из внутренних блоков. Моя цель - создать что-то вроде «режима редактирования» моего блока, который автоматически включается, когда активен блок или один из дочерних блоков.