Получить информацию и атрибуты из других блоков Гутенберга

Можно ли получить информацию, такую ​​как атрибуты блока, из других блоков из вызова registerBlockType?

Например, если у меня есть блок с InnerBlocks в качестве содержимого, возможно ли получить атрибуты из блоков внутри этого InnerBlocks, или наоборот?

2 ответа

Решение

Да, это возможно, если вы управляете собственным магазином в Гутенберге, который на самом деле является магазином Redux. @ WordPress/ данные

Рекомендуется хранить логику нескольких блоков отдельно в их собственных атрибутах (поэтому они являются блоками). В целях повторного использования вы можете создавать компоненты React, которые можно использовать внутри разных блоков, таким образом, атрибуты вашего блока могут быть переданы в подпорки компонента React.

Вы также можете использовать Block context для достижения этой цели.

В своем родительском блоке сопоставьте атрибут, который вы хотите использовать в своем дочернем блоке, используя providesContext. Итак, если вы хотите составить карту recordIdконфигурация вашего родительского блока будет выглядеть так:

      registerBlockType('my-plugin/parent-block', {
  // ...

  attributes: {
    recordId: {
      type: 'number',
    },
  },
 
  providesContext: {
    'my-plugin/recordId': 'recordId',
  },

  // ...
}

Затем дочерний блок может «потребить» контекст, добавив следующее useContextстрока конфигурации вашего дочернего блока:

      registerBlockType('my-plugin/child-block', {
  // ...

  usesContext: ['my-plugin/recordId'],

  // ...
}

В вашем дочернем блоке editа также saveметоды, вы можете получить доступ к контексту следующим образом:

      registerBlockType('my-plugin/child-block', {
  // ...

  edit(props) {
    const { context } = props;
    const { "my-plugin/recordId": recordId } = context;

    return (
      <p>{ recordId }</p>
    );
  },

  save(props) {
    const { context } = props;
    const { "my-plugin/recordId": recordId } = context;

    return (
      <p>{ recordId }</p>
    );
  }

  // ...
}
Другие вопросы по тегам