Ich versuche, einen zentralen Gutenberg-Block so zu erweitern, dass er nur dann einige zusätzliche Optionen enthält, wenn er in einem bestimmten benutzerdefinierten Block enthalten ist. Ich dachte, der Blockkontext würde dies zu einer einfachen Aufgabe machen – setzen Sie den Containerblock auf „providesContext“ und verwenden Sie den Filter „blocks.registerBlockType“, um dem Kernblock „usesContext“ hinzuzufügen. Im Editor.BlockEdit-Filter dachte ich, ich könnte den Kontext aus den Requisiten des Blocks abrufen. Der Kontext gehört jedoch nicht zu den Requisiten. Um sicherzustellen, dass ich im Zusammenhang mit dem Kontext nichts falsch gemacht habe, habe ich den Filter „editor.BlockEdit“ für einen meiner benutzerdefinierten Blöcke verwendet, von dem ich wusste, dass er den Blockkontext korrekt empfängt. Es hat auch keinen Kontext als eine seiner Requisiten.
Kennt jemand eine Möglichkeit, Blockkontext in den Filter editor.BlockEdit zu bekommen?
Als Referenz ist hier ein Ausschnitt des bisherigen Codes:
title: 'Card',
icon: 'images-alt2',
category: 'utdesign_system',
description: '',
attributes: {
blockName: {
type: 'string',
default: 'card',
}
},
providesContext: {
'card/blockName': 'blockName',
},
edit,
save,
} );
function addImageContext( settings ) {
if( settings.name == 'core/image' ){
settings.usesContext = Object.assign( ['card/blockName'] );
}
return settings;
}
addFilter(
'blocks.registerBlockType',
'gutenstrap/image-context',
addImageContext
);
const addImageControls = createHigherOrderComponent( ( BlockEdit ) => {
return ( props ) => {
const {
name,
attributes,
setAttributes,
context,
isSelected,
} = props;
//do stuff with context
};
}, "addImageControls" );
addFilter(
'editor.BlockEdit',
'gutenstrap/image-context',
addImageControls
);```