Разработка блока WordPress Gutenberg - Как создать пользовательский компонент высшего порядка и собирать значения метабоксов в качестве подпорок внутри него - PullRequest
0 голосов
/ 19 февраля 2019

Мне кажется, трудно найти правильный пример для разработки Гутенберга.

Мои вопросы:

  • Можно ли написать свой собственный компонент высшего порядка в Гутенберге?
  • У меня есть блок с 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 и показывать предупреждающее сообщение о том, что проверка не удалась?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...