Мне кажется, трудно найти правильный пример для разработки Гутенберга.
Мои вопросы:
- Можно ли написать свой собственный компонент высшего порядка в Гутенберге?
- У меня есть блок с
metaboxes
.Если приведенное выше верно, могу ли я получить доступ к этим metaboxes
внутри HOC? - Можно ли проверить значения
metabox
и вернуть скажем false
из HOC и получить то же самое внутри обертываемого компонента? - На основании значения, возвращенного HOC, возможно ли отключить кнопки
Publish
и Update
?Это означает, что они будут кликабельными, только если HOC вернет true
.
Я думал примерно так:
Компонент высшего порядка:
const withValidation = ( WrappedComponent ) => {
const thisProps = ...this.props;
return false;
}
export default withValidation;
Файл блока:
import { __ } = wp.i18n;
import { registerBlockType } = wp.blocks;
import { RichText } = wp.editor;
import { withValidation } from './validation';
function check_meta_validation() {
registerBlockType( 'subrata/validation_check', {
title: '...',
icon: '...',
category: '...',
attributes: {
bio: {
type: 'string',
source: 'meta',
meta: 'author_bio'
}
},
edit: withValidation( 'validate', function ( props ) {
const onAuthorBioChange = ( content ) => {
props.setAttributes( { bio: content } );
}
return(
<div className={props.className}>
<RichText
value = {props.attributes.bio}
onChange = { onAuthorBioChange }
/>
</div>
);
} ),
save: function( props ) {
return null;
}
} );
}
export default check_meta_validation();
И, наконец, в block.js (я использую инструмент create-guten-block
) я импортирую вышеуказанный блок:
block.js
import { metaBoxValidation } from './mbv';
Но блок не отображается в диалоге вставки, когда я использую withValidation
компонент более высокого порядка.Когда я удаляю его, появляется блок.
Я не знаю, как это сделать.Но попробовал описанный выше подход без удачи!Кроме того, даже нечто подобное можно было бы сделать, и я могу получить значение, возвращаемое HOC, как я буду предотвращать / заставлять отключать эти кнопки Publish
и Update
и показывать предупреждающее сообщение о том, что проверка не удалась?