You need to enable JavaScript to run this app. WordPress Gutenberg:multiline="p"的RichText如何设置children默认值
优惠活动
大模型
产品
解决方案
定价
更多

WordPress Gutenberg:multiline="p"的RichText如何设置children默认值

问题根源

当RichText启用multiline="p"属性时,组件的内部数据结构会切换为多段落独立节点渲染模式,要求传入的value值必须是和DOM结构匹配的、由多个<p>标签虚拟节点组成的数组,和非multiline模式下的纯文本取值逻辑完全不同。

你之前尝试的所有默认值配置,均不匹配multiline模式下的合法数据结构,因此无法被正常渲染:

  • default: 'Lorem Ipsum Dolor Sit Amet' 是纯字符串,multiline模式下RichText无法将单字符串拆解为合法的p段落节点,会直接判定内容为空,仅显示占位提示文本
  • default: ['Lorem Ipsum Dolor Sit Amet', 'test', 'test2'] 虽然是数组结构,但数组元素是纯文本字符串,没有对应p标签的节点包裹结构,不符合source: 'children'的取值规则
  • default: () => <p>...</p> 、default: [() => <p>...</p>] 这类函数式配置,因为Gutenberg块属性的default值要求是可序列化的静态内容,不支持传入React渲染函数、组件类这类非可序列化对象,区块初始化逻辑根本不会读取这类值

移除multiline="p"后默认值可正常显示,是因为非multiline模式下RichText直接接收纯文本字符串作为value,你之前写的字符串类型默认值刚好匹配该模式的取值要求。

可生效的默认值配置方式

需要让默认值完全匹配multiline p模式下的合法数据结构,直接传入带p标签包裹的虚拟节点数组即可,写法如下:

attributes: {
  text: {
    type: 'array',
    source: 'children',
    selector: 'div',
    // 匹配多段落模式的取值结构
    default: [
      <p key="default-content">Lorem Ipsum Dolor Sit Amet</p>
    ]
  },
},

注意:所有虚拟节点需要携带稳定的key属性,避免Gutenberg在区块更新时出现渲染diff报错,不要用匿名函数包裹内容。


内容的提问来源于stack exchange,提问作者GWorking

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.12 02:24:04