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

如何在React中使用模板字面量每行显示一组数据项?

解决方法:用模板字面量结合块级元素实现每行显示

问题的核心在于:HTML 会忽略纯文本中的换行符和多余空格,直接把模板字符串拼接后的内容渲染成连续文本。要实现每行显示一组数据,我们可以用模板字面量生成文本内容,再把每个文本包裹在块级元素(如<div>)中,或者利用<br>标签强制换行(但需要注意安全问题)。

推荐方案(安全且简洁)

把每个模板字符串生成的文本放在<div>(或者<p>)里,块级元素默认会独占一行,完美解决换行需求,还不需要使用危险的dangerouslySetInnerHTML:

import React from 'react'

function NameList() {
  const info = [
    { id:1, name:'nishant', age:18, skill:'noob in everthing' },
    { id:2, name:'mayank', age:18, skill: 'python king' },
    { id:3, name:'kartik', age:18, skill: 'python hero' }
  ]

  // 用模板字面量生成每个项的文本,再包裹在div中
  const infoList = info.map(singleinfo=> (
    <div key={singleinfo.id}>
      {`${singleinfo.id} | ${singleinfo.name} | ${singleinfo.age} | ${singleinfo.skill}`}
    </div>
  ))

  return (
    <div>
      {infoList} {/* 这里建议不用放在h1里,h1是标题标签,数据用div更语义化 */}
    </div>
  )
}

export default NameList

另一种方案(用<br>标签)

如果你一定要直接用模板字面量包含换行标签,需要使用dangerouslySetInnerHTML让React解析HTML标签,但这种方式存在XSS风险,仅当你完全信任数据内容时使用:

import React from 'react'

function NameList() {
  const info = [
    { id:1, name:'nishant', age:18, skill:'noob in everthing' },
    { id:2, name:'mayank', age:18, skill: 'python king' },
    { id:3, name:'kartik', age:18, skill: 'python hero' }
  ]

  const infoList = info.map(singleinfo=> 
    `${singleinfo.id} | ${singleinfo.name} | ${singleinfo.age} | ${singleinfo.skill}<br />`
  )

  return (
    <div>
      {/* 把数组拼接成字符串,用dangerouslySetInnerHTML渲染 */}
      <div dangerouslySetInnerHTML={{ __html: infoList.join('') }} />
    </div>
  )
}

export default NameList

为什么原来的代码不行?

你之前的代码把模板字符串数组直接放在<h1>中,React会自动把数组元素拼接成一个连续的字符串,HTML渲染时会忽略字符串里的换行符(即使你在模板里加\n也没用,因为HTML不识别纯文本换行),所以所有数据会挤在一行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 12:33:14