Gutenberg Inspector Controls

3

Estou tentando criar um bloco de Gutenberg simples que implementa <InspectorControls> , mas estou recebendo um erro de Reação, não importa qual componente eu use.

const { __ } = wp.i18n;
const {
    registerBlockType,
    RichText,
    AlignmentToolbar,
    BlockControls,
    InspectorControls,
    TextControl
} = wp.blocks;

registerBlockType( 'gutenberg-examples/example-04-controls-esnext', {
    title: __( 'Example: Controls (esnext)' ),
    icon: 'universal-access-alt',
    category: 'layout',
    attributes: {
        content: {
            type: 'array',
            selector: 'p',
        },
    },
    edit: props => {
        const {
            attributes: {
                content,
                alignment,
                text
            },
            focus,
            className,
            setFocus
        } = props;

        const onChangeContent = newContent => {
            props.setAttributes( { content: newContent } );
        };

        const onChangeAlignment = newAlignment => {
            props.setAttributes( { alignment: newAlignment } );
        };

        const onChangeText = newText => {
            props.setAttributes( { text: newText } );
        };

        return (
            <div>
                {
                    !! focus && (
                        <InspectorControls>
                            <AlignmentToolbar
                                value={ alignment }
                                onChange={ onChangeAlignment }
                            />
                            <TextControl
                                label='Additional CSS Class'
                                value={ text }
                                onChange={ onChangeText }
                            />
                        </InspectorControls>
                    )
                }
                <RichText
                    className={ className }
                    style={ { textAlign: alignment } }
                    onChange={ onChangeContent }
                    value={ content }
                    focus={ focus }
                    onFocus={ setFocus }
                    />
            </div>
        );
    },
    save: props => {
        // ignore for now
    }
} );

Estou usando o kit de desenvolvimento 'create-guten-block'.

Erro:

react-dom.min.3583f8be.js:162 Error: Minified React error #130; visit http://facebook.github.io/react/docs/error-decoder.html?invariant=130&args[]=undefined&args[]= for the full message or use the non-minified dev environment for full errors and additional helpful warnings.
    at l (react-dom.min.3583f8be.js:12)
    at qc (react-dom.min.3583f8be.js:43)
    at K (react-dom.min.3583f8be.js:53)
    at n (react-dom.min.3583f8be.js:57)
    at react-dom.min.3583f8be.js:62
    at f (react-dom.min.3583f8be.js:130)
    at beginWork (react-dom.min.3583f8be.js:136)
    at d (react-dom.min.3583f8be.js:158)
    at f (react-dom.min.3583f8be.js:159)
    at g (react-dom.min.3583f8be.js:159)
    
por Danny Cooper 20.03.2018 / 15:05

2 respostas

4

TextControl é de wp.components não wp.blocks .

const {
    registerBlockType,
    RichText,
    AlignmentToolbar,
    BlockControls,
    InspectorControls,
} = wp.blocks;
const {
    TextControl
} = wp.components;

Alterando isso, consegui que seu bloco funcionasse bem, em vez de erro em Gutenberg 2.2.0 .

    
por David Sword 20.03.2018 / 21:46
4

InspectorControls está obsoleto a partir de v2.4

enlace

  

wp.blocks.InspectorControls. * componentes removidos. Por favor use os componentes wp.components. * Em vez disso.

Isso está bem no topo do seu código:

const {
    registerBlockType,
    RichText,
    AlignmentToolbar,
    BlockControls,
    InspectorControls,
    TextControl
} = wp.blocks;

Especificamente:

const {
    ...
    InspectorControls,
    ...
} = wp.blocks;

Isso está obsoleto e não funcionará, já que o documento obsoleto no reporte de Gutenberg diz isso:

  

wp.blocks.InspectorControls. * componentes removidos. Por favor use os componentes wp.components. * Em vez disso.

    
por Tom J Nowell 20.03.2018 / 15:31