如何为类提供多行元素古腾堡 RichText 块?

Posted

技术标签:

【中文标题】如何为类提供多行元素古腾堡 RichText 块?【英文标题】:How to provide class with multiline element gutenberg RichText block? 【发布时间】:2019-03-27 11:02:46 【问题描述】:

我正在为古腾堡 RichText 块使用以下代码

el(
    RichText,
    
        key: 'editable',
        tagName: 'ul',
        multiline: 'li',
        className: 'list-group',
        onChange: onChangeContent,
        value: content,
    
)

谁能帮我分配一个带有多行 li 元素的类list-item

【问题讨论】:

也想知道这个。 也想知道这个 【参考方案1】:

我不认为古腾堡开箱即用地支持这一点。您可以通过将保存功能中的<li> 替换为<li class="list-item"> 来修改富文本编辑器的内容。 您需要使用dangerouslySetInnerhtml<ul> 中将字符串呈现为html

save: function save(props) 
    function createMarkup() 
        return  __html: props.attributes.content.replace(/<li>/g, '<li class="list-item">') ;
    

    return el('ul',  dangerouslySetInnerHTML: createMarkup() );

更新 如果在编辑器本身中添加新的&lt;li&gt; 时需要立即执行此操作,则需要调用函数将类添加到RichText 组件的onChange 事件中的&lt;li&gt; 元素中。

edit: function edit(props) 
    function setCustomClass() 
        $('.list-group li').addClass('list-item');
    
    return el(RichText, 
        key: 'editable',
        tagName: 'ul',
        multiline: 'li',
        className: 'list-group',
        onChange: function onChangeContent(content) 
            props.setAttributes( content: content );
            setCustomClass();
        ,
        value: props.attributes.content
    );
,

【讨论】:

好吧,它不会立即起作用。保存文档后即可使用。每当将新的 li 元素添加到列表中时,我都需要添加该类。 我已经更改了答案,以便在添加新 li 时包含更改@RameezIqbal

以上是关于如何为类提供多行元素古腾堡 RichText 块?的主要内容,如果未能解决你的问题,请参考以下文章

如何在古腾堡块中创建多个元字段

好奇,您如何管理管理区域中的古腾堡区块预览?

古腾堡编辑器滚动块进入视图

如何在同一页面上添加多个相同的自定义古腾堡块?

古腾堡核心块 - 删除选项

ACF 古腾堡块中的预览图像