自定义块中未填充类名称

时间:2020-05-29 作者:Dale de Silva

我正在创建一个自定义块插件,但我在将类名显示在save函数的标记输出上时遇到了一些问题。

我的编辑函数使用return()并传入以下内容:

<>
    <div className={className}>
        <RichText
            tagName="a"
            //
            placeholder={__("Add text…", plugin.slug)}
            value={text}
            //
            formattingControls={["bold", "italic", "strikethrough"]}
            //
            onChange={this.onChangeContent}
            //
        />
    </div>
</>
在save函数中,我还使用return(),并尝试传入下面描述的许多变体。

Passing RichText.Content directly:

<RichText.Content
    tagName="a"
    value={text}
    className={className}
/>
无论是否使用className行,它都可以保存<a class="…">Demo Text</a> 到数据库。这是预期,但是,我需要用其他东西包装锚标记。

Using a wrapper shortcut:

<>
    <RichText.Content
        tagName="a"
        value={text}
        className={className}
    />
</>
上面,我已经把a标签包好了<></> 但无论是否有className行,都不会在save函数中填充类名。<a>Demo text</a> 始终保存到数据库。

Using a div:

<div>
    <RichText.Content
        tagName="a"
        value={text}
        className={className}
    />
</div>
上面,我已经把a标签包好了<div></div> 但是,无论RichText标记中是否有className行,只有在保存到数据库时,才会在div标记中填充类名。<div class="…"><a>Demo Text</a></div> 始终保存到数据库。

当我从a标记切换到p标记时,也会发生同样的情况。

有没有办法让类名填充封装在其他标记中的标记

1 个回复
SO网友:Will

我整个下午都在试图弄清楚这一点,也弄清楚了在某些元素的根的save函数中,默认情况下会传递类名。

e、 g.在下面的代码示例中,className是warning

return (
<div className="other-class-name" value={ props.attributes.content } />;
将在的前端返回元素

<div class="wp-block-block-name is-warning other-class-name">
https://developer.wordpress.org/block-editor/developers/block-api/block-registration/#supports-optional 有更多信息