Block: attributes not saving

时间:2020-05-22 作者:SnappleMan

我正在尝试制作一个在编辑器上有3个文本输入的古腾堡块。然后在前端显示一些段落/句子。

如果我尝试放置2段->更新->然后重新加载页面,我会遇到此错误。我这样假设是因为它没有为段落文本输入保存2的值

我在谷歌上搜索了很多次,但没有找到任何有用的东西。我试图使用源代码/选择器,但我很确定我一开始就错了。

Block validation: Block validation failed for `cgb/block-test` ({name: "cgb/block-test", icon: {…}, attributes: {…}, keywords: Array(3), save: ƒ, …}).

Content generated by `save` function:

<div paragraphs="1" class="wp-block-cgb-block-test">1</div>

Content retrieved from post body:

<div paragraphs="2" class="wp-block-cgb-block-test">2</div>

attributes: {
    paragraphs: {
        type: \'integer\',
        default: 1,
        source: \'paragraphs\',
    selector: \'paragraphs\',
    }
},
edit: ( props ) => {
    console.log(props);

    const { attributes, setAttributes } = props;
    return (
        el( \'div\', { className: props.className },
            el( TextControl, {
                label: \'How many paragraphs?\',
                value: props.attributes.paragraphs,
                onChange: ( value ) => {
                    setAttributes( { paragraphs: value } );
                }
            })
        )
    );
},

save: ( props ) => {
    const { attributes } = props;
    return el(\'div\', {\'paragraphs\': attributes.paragraphs}, attributes.paragraphs);
    },
} );

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

我想出来了。对其他人来说,我就是这样做的。

我的保存功能以结束

return el(\'div\', {},
                el( \'p\', {className: \'paragraphs\'}, attributes.paragraphs ), 

        )  
我把属性改成了这个。

paragraphs: {
        type: \'string\',
        default: 1,
        source: \'html\',
        selector: \'.paragraphs\',
    },
然后是我的风格。scss我只有一个显示器:无。因为编辑器选项不应该显示在前端。

相关推荐