首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >古登堡检查员控制

古登堡检查员控制
EN

WordPress Development用户
提问于 2018-03-20 14:05:14
回答 3查看 7.1K关注 0票数 4

我试图制作一个简单的Gutenberg块来实现<InspectorControls>,但是无论我使用哪个组件,我都会得到一个反应错误。

代码语言:javascript
复制
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
    }
} );

我使用的是“create block”开发工具包。

错误:

代码语言:javascript
复制
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)
EN

回答 3

WordPress Development用户

回答已采纳

发布于 2018-03-20 20:46:21

TextControl来自wp.components而不是wp.blocks

代码语言:javascript
复制
const {
    registerBlockType,
    RichText,
    AlignmentToolbar,
    BlockControls,
    InspectorControls,
} = wp.blocks;
const {
    TextControl
} = wp.components;

更改后,我可以让您的块正常工作,而不是在Gutenberg 2.2.0中出错。

票数 6
EN

WordPress Development用户

发布于 2018-03-20 14:31:25

从2.4版起,InspectorControls就不再受欢迎了

https://github.com/WordPress/gutenberg/blob/9ebb918176c1efd0c41561d67ea3273bae5d3d6a/docs/deprecated.md#L15

检查控制。*组件被移除。请使用wp.components.* components。

这就在代码的顶部:

代码语言:javascript
复制
const {
    registerBlockType,
    RichText,
    AlignmentToolbar,
    BlockControls,
    InspectorControls,
    TextControl
} = wp.blocks;

具体地说:

代码语言:javascript
复制
const {
    ...
    InspectorControls,
    ...
} = wp.blocks;

这是不推荐的,不能工作,正如Gutenberg上不推荐的文档这样说的:

检查控制。*组件被移除。请使用wp.components.* components。

票数 5
EN

WordPress Development用户

发布于 2019-05-22 19:30:25

不知道还有多少人被困在这里。如果插件的文件夹结构如下所示,则需要编辑2个文件

代码语言:javascript
复制
my-guten-block
|-> /src
||-> block.js
|-> plugin.php

在对脚本进行排队时,需要添加plugin.php文件以添加wp-editor的依赖项

代码语言:javascript
复制
const dependencies = array('wp-editor');

wp_enqueue_script( handle: 'my-guten-block',
                   src: plugin_dir_url(__FILE__) . 'src/block.js',
                   dependencies)

然后可以添加到block.js文件中。

const { InspectorControls } = wp.editor

并根据需要使用。

票数 0
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/298355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档