创建一个与默认段落块类似的自定义块,以便Enter开始一个新块

时间:2019-06-10 作者:user3389097

我一直在尝试创建一个自定义块,其行为类似于默认的段落和标题块,以便在按下Enter键时启动一个新的段落块。

无论我尝试什么,当按下Enter键(使用或不使用SHOT键)时,都会添加标签。

我想设置multiline 的属性RichTextfalse 也许可以,但似乎不起作用。

我的JS代码是:

/** IMPORTANT VARS!!! **/
var el = element.createElement;
var RichText = editor.RichText;

blocks.registerBlockType( \'snt/my-heading-border\', {
    title: \'My Test Heading\',
    icon: \'smiley\',
    category: \'common\',

    attributes: {
        content: {
            type: \'array\',
            source: \'children\',
            selector: \'h3\'
        }
    },

    edit: function( props ) {
        function onChangeContent( newContent ) {
            console.log(newContent);
            props.setAttributes( { content: newContent } );
        }

        return el(
            RichText,
            {
                tagName: \'h3\',
                className: props.className,
                onChange: onChangeContent,
                value: props.attributes.content,
                placeholder: \'Enter a heading\'
            }
        );
    },

    save: function( props ) {
        return el( RichText.Content, {
            tagName: \'h3\', 
            value: props.attributes.content
        } );
    },
} );
我忍不住想我错过了一些显而易见的事情。非常感谢您的帮助。

1 个回复
SO网友:user9

can check out the code of the paragraph (和标题)块。这是开源代码!耶!让它激励你。

<RichText 
  ...
  onSplit={ ( value ) => {
    if ( ! value ) {
      return createBlock( name );
    }
    return createBlock( name, {
     ...attributes,
     content: value,
    } );
  } }
  onMerge={ mergeBlocks }
  ...
</RichText>

相关推荐