You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React JSX中渲染对象字符串数组 空串转空行且单个字符串独占一行

问题解决方法

原有代码的问题在于直接将所有字符串放入同一个<p>标签渲染,既没有按空字符串拆分段落,也没有处理同一段落内多行文本的换行逻辑,因此无法达到预期效果。

调整后的代码

父组件调用代码

直接将完整的ptr0数组传递给Transcript组件即可,无需提前遍历:

<Transcript transcript={objecttrans.ptr0} />

Transcript组件代码

组件内部先对输入的文本数组按空字符串做段落分组,同一段落内的多行内容用<br>分隔,不同段落用独立的<p>标签渲染:

import React from 'react'

const Transcript = (props) => {
  const paragraphs = []
  let currentParagraph = []

  // 按空字符串拆分段落
  props.transcript.forEach(line => {
    if (line === '') {
      // 遇到空行时保存当前已收集的非空段落
      if (currentParagraph.length > 0) {
        paragraphs.push(currentParagraph)
        currentParagraph = []
      }
      // 如果需要显式渲染空行,可以放开下面的注释
      // paragraphs.push([])
    } else {
      currentParagraph.push(line)
    }
  })

  // 处理最后一段未保存的内容
  if (currentParagraph.length > 0) {
    paragraphs.push(currentParagraph)
  }

  return (
    <div className="content">
      {paragraphs.map((paraLines, paraIndex) => (
        <p key={paraIndex}>
          {paraLines.map((line, lineIndex) => (
            <React.Fragment key={lineIndex}>
              {line}
              {lineIndex !== paraLines.length - 1 && <br />}
            </React.Fragment>
          ))}
        </p>
      ))}
    </div>
  )
}

export default Transcript

效果说明

以上代码会将连续的非空文本行放在同一个<p>标签内,行之间插入<br>换行,空字符串作为段落分隔符拆分不同<p>标签,和要求的最终渲染效果完全一致。如果需要将原数组中的空字符串显式渲染为空白行,放开代码中对应注释即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:06:02