实现Gutenberg RichText onSplit/onReplace

时间:2020-04-07 作者:gregdev

我需要一个无序的列表,但要为每个列表项选择选项。为了实现这一点,我创建了一个名为icon list的自定义块,它是ul 元素,它只允许将我的自定义图标列表项块作为子项。我的图标列表项块只是一个RichText元素,具有tagName: li 和一些控件。这一切都很好,但当前按enter键会在当前图标列表项块中添加一个换行符-我真正想要的是按enter键插入一个新的图标列表项块。类似地,在图标列表项块开始时按backspace键应删除该块-与核心/列表块的功能完全相同。

我对Gutenberg文档和源代码进行了深入研究,发现我需要为我的RichText元素实现onSplit和onReplace属性,但我不清楚我到底是如何做到这一点的。到目前为止,我已经:

el(RichText, {
    tagName     : \'li\',
    className   : \'icon--\' + props.attributes.icon,
    value       : props.attributes.content,
    placeholder : props.attributes.placeholder,
    onChange    : function(value) {
        props.setAttributes({ content: value })
    },
    onSplit     : function(value) {
        if (!value) {
            return createBlock(\'tutti/icon-list-item\');
        }

        return createBlock(\'tutti/icon-list-item\', {
            ...props.attributes,
            content: value,
        }
    },
    onReplace   : function() {
        // something
    }
})
。。。很明显,当谈到onReplace函数时,我完全不知所措。任何指点都将不胜感激!

1 个回复
SO网友:Albin

未测试。我只是在浏览其他东西。但我会尝试这样的方式:

onReplace: function() {
   var myID    = props.clientId;
   wp.data.dispatch(\'core/block-editor\').removeBlock(myID);
}

相关推荐