«Невозможно прочитать свойство getEditedPostAttribute неопределенного» для InnerBlocks в Гутенберге - PullRequest
1 голос
/ 14 мая 2019

Я пытаюсь реализовать компонент блока для редактора Гутенберга в WordPress.Там я хочу использовать InnerBlocks компонент , который также используется, например, для компонента столбцов, предоставляемого самим Wordpress.

Когда я пытаюсь начать использовать компонент, я всегда получаюта же ошибка во внешнем интерфейсе:

Error message from the frontend

В консоли я получаю сообщение:

TypeError: Cannot read property 'getEditedPostAttribute' of undefined
    at script.build.js?ver=1:27811
    at getNextMergeProps (script.build.js?ver=1:103469)
    at new ComponentWithSelect (script.build.js?ver=1:103487)
    at zf (react-dom.min.js?ver=16.6.3:69)
    at Mf (react-dom.min.js?ver=16.6.3:87)
    at ph (react-dom.min.js?ver=16.6.3:98)
    at eg (react-dom.min.js?ver=16.6.3:125)
    at fg (react-dom.min.js?ver=16.6.3:126)
    at wc (react-dom.min.js?ver=16.6.3:138)
    at fa (react-dom.min.js?ver=16.6.3:137)

Я реализовал его аналогично в соответствиик этой документации здесь :

const {registerBlockType} = wp.blocks;
const {InspectorControls, RichText, MediaUpload} = wp.editor;

import {TextControl} from '@wordpress/components';
import {InnerBlocks} from '@wordpress/block-editor';

let blockStyle = {
    marginTop: "25px",
    marginBottom: "25px;"
};

registerBlockType('myself/test-component', {
    title: 'Test component',
    icon: 'editor-insertmore',
    category: 'common',
    attributes: {
        title: {
            type: 'string'
        }
    },

    edit(props) {
        const {setAttributes, attributes} = props;

        function setTitle(changes) {
            setAttributes({
                title: changes
            })
        }

        return (
            <div style={blockStyle}>
                <TextControl
                    placeholder="Titel"
                    value={attributes.title}
                    onChange={setTitle}
                />
                <InnerBlocks
                    templateLock={false}
                    renderAppender={(
                        () => <InnerBlocks.ButtonBlockAppender/>
                    )}
                />
            </div>
        )
    },

    save(props) {
        const {attributes, className} = props;

        return (
            <div style={blockStyle}>
                <InnerBlocks.Content/>
            </div>
        );
    }
});

Мой вопрос сейчас, есть ли кто-то еще, кто имеет эту проблему или как я могу заставить этот компонент работать?

1 Ответ

0 голосов
/ 16 мая 2019

Итак, я сам нашел ошибку. Я снова проверил источник script.build.js и нашел следующие строки

var _select2 = select('core/editor'),
      getEditedPostAttribute = _select2.getEditedPostAttribute;

Я использовал только пакет @ wordpress / block-editor. Поэтому я добавил следующий пакет в файл script.js и снова запустил его.

npm install @wordpress/editor

В script.js

import {InnerBlocks} from "@wordpress/editor";

Ошибка исчезла, но я, к сожалению, получил новую.

...