【问题标题】:Render list of words as <span> in a <p> tag in React js在 React js 的 <p> 标记中将单词列表呈现为 <span>
【发布时间】:2020-03-04 11:36:22
【问题描述】:

我有一个单词列表:

document    [ paragraph [w1, w2, w3 ] , [w4, w5, w6] , [w7, ...], ... ]

我想用双列表渲染在 React Js 中渲染它们:

&lt;Document&gt; 组件使用 map() 渲染 &lt;Pargraph&gt; 列表。 &lt;Pargraph&gt; 渲染列表 &lt;Word&gt; 与 map()。

我的问题是,当我的&lt;paragraph&gt; 太长时,文字会出现在屏幕之外。我想在单词之间插入一个&lt;br&gt;,但它不适用。最终生成的渲染 html 是:

<div>  # my Document
  <p> # my paragraph
    <span> <span> <span> ... <br/> <span> <span>
  </p>
  <p>
    ...
  </p>
</div>

问题是&lt;/br&gt; 不适用,这可能是换行的正确标签?

这是一张照片 => overflow rendering


更新


这里是渲染这个的反应代码:

文档 => 段落

export default class Document extends React.Component<
  DocumentProps,
  DocumentState
> {
  constructor(props: Readonly<DocumentProps>) {
    super(props);
  }

  render = () => {
    return (
      <div id="documentContainer">
        {this.props.document.pargraphs.map((paragraph, index) => {
          return (
            <Paragraph
              key={index}
            ></Paragraph>
          );
        })}
      </div>
    );
  };
}

段落 => 单词 [ 这里是 &lt;br /&gt; ]

export default class Paragraph extends React.Component<ParagraphProps, ParagraphState> {
  constructor(props: Readonly<ParagraphProps>) {
    super(props);
  }

  render = () => {
    return (
      <p className="rowContainer">
        {this.props.text.map((word, index) => {
          console.log(index);
          if (index === 10) return <br />;
          return <Word word={word} key={index}></Word>;
        })}
      </p>
    );
  };

单词:

export default class Word extends React.Component<WordProps> {
  constructor(props: Readonly<WordProps>) {
    super(props);
  }

  render = () => {
    return <span className="word">{this.props.word}</span>;
  };
}

文档有 flex css: column-container

【问题讨论】:

  • 你在哪里添加 br?我的意思是在代码中。
  • 包装看起来应该使用 CSS 来解决...
  • 如果您在&lt;span&gt; 中插入&lt;br&gt;,它不会移动到下一行,因为span 默认情况下是一个内联元素。但是,我无法判断这一点,因为您没有在结果旁边展示您的实现。

标签: javascript html reactjs rendering overflow


【解决方案1】:

相对于React 而言,这绝对是CSS 的问题。 您是否尝试在100% 为您的p 组件设置maxWidth? 或者您可以检查span 元素上的display 属性,我认为检查器在前面可以很快解决。

【讨论】:

    【解决方案2】:

    我通过使用 white-space: initial in each span inside 和 white-space: pre-wrap in paragraph 解决了溢出问题。

    【讨论】:

    猜你喜欢
    • 2022-01-10
    • 2021-11-20
    • 2021-01-24
    • 1970-01-01
    • 2016-08-12
    • 2016-10-02
    • 2012-03-03
    • 2020-11-08
    • 1970-01-01
    相关资源
    最近更新 更多