WordPress Gutenberg块:输入字段不可编辑

时间:2018-12-31 作者:Marty McGee

Describe the bug

在以Gutenberg为核心的WordPress 5.0.2中(不是插件),当使用输入字段从用户捕获文本并提供值=来自道具时。属性,则输入字段不可编辑。输出的html代码看起来很好(不存在禁用或只读属性)。但是,在浏览器中,我无法更改/编辑输入字段中的值。(更新:它尝试将[对象对象]注入文本字段。)其他组件,如调色板和按钮,工作正常。

我能找到的唯一错误来自Firefox(仅来自Chrome的单独警告)。。

Firefox错误1:

错误:访问属性“nodeType”/wp includes/js/tinymce/wp tinymce的权限被拒绝。php?版本=4800-20180716 2号线

Firefox错误2:

TypeError:节点的参数1。contains未实现接口节点/wp包括/js/tinymce/wp tinymce。php?版本=4800-20180716 2号线

Chrome警告1:

指定的值“[对象对象]”不是有效数字。该值必须与以下正则表达式匹配:-?(\\d+.\\d+。\\d+.\\d+)([eE][-+]?\\d+?

我真的很想使用基本的输入字段/组件来接受用户的数据。非常感谢您对我的古腾堡代码的任何帮助。

To Reproduce

以下是我的问题代码:

...

registerBlockType( \'wcn/button\', {

...

attributes: {
    borderWidth: {
        type: \'number\',
        default: 2
    }
},
edit: (props) => {
    const onChangeBorderWidth = newBorderWidth => {
        props.setAttributes( { borderWidth: newBorderWidth })
    }
    return (
        <div className={ props.className }>
            <input 
                name="borderWidth"
                type="text"
                value={ props.attributes.borderWidth }
                onChange={ onChangeBorderWidth }
            />
        </div>
    )
}

...

Expected behavior

我希望编辑输入字段以获取一个数值(就像几十年来一样)。但是,指定的数值是不可更改的。非常奇怪。

Desktop Development Environment:

<操作系统:Windows 10浏览器Chrome和Firefox版本71.0.3578.98和63.0.3

1 个回复
最合适的回答,由SO网友:Marty McGee 整理而成

事实证明,为了获得输入字段的值,必须在回调函数中指向它,如下所示。。。

const onChangeBorderWidth = newBorderWidth => {
    props.setAttributes( { borderWidth: newBorderWidth.target.value })
}
这将获取事件的输入目标值并将其分配给正确的属性。

提示:您不必对Gutenberg的TextControl组件执行此操作。。默认情况下,它返回event.target.value

相关推荐