将字符传递给组件会忽略 React Js 中的空格

Passing characters to a components ignores spaces in React Js

我一直在研究一个接受段落(字符串)并将每个字符传递给另一个的 React 组件。但是当我在 Tailwind CSS 中使用 flex 时,空格似乎没有出现。如果没有 flex,所有字符都会垂直显示。这里 apiResponse 是带空格的字符串。

return(
  <div className="w-3/4 flex flex-wrap">
      {apiResponse.split('').map(function(char, index){
        return <Character key={index}>{char}</Character>;
    })}
  </div>

)

字符组件的代码是

const Character = (props) => {
    return(
        <div className="bg-green-100">
            {props.children}
        </div>
    )
}

export default Character;

如何使用 Tailwind CSS 纠正此错误?还是JS代码有问题?

只有 space 的 Div 被视为 <div /> 而不会显示。 你可以试试这样的

return(
  <div className="w-3/4 flex flex-wrap">
      {apiResponse.split('').map(function(char, index){
        return <Character key={index}>{char === ' ' ? '\u00A0' : char}</Character>;
    })}
  </div>

或者您可以使用 span 而不是 div

如果您在元素中放置单个 space " ",则不会占用任何 space。示例:

.flex {
  display: flex;
}
<div class="flex">
  <div>a</div><div>b</div><div>c</div>
  <div> </div>
  <div>a</div><div>b</div><div>c</div>
</div>

您可以使用 \u00A0 字符(相当于 &nbsp; 的 unicode)。您可以在 React 代码中用 \u00A0 替换所有 space 字符,如下所示:

const Character = ({ children }) => (
  <div class="character">
    { children === " " ? "\u00A0" : children }
  </div>
);

const App = () => {
  const apiResponse = "The quick brown fox jumps over the lazy dog.";
  return (
    <div className="paragraph">
      {apiResponse.split('').map((char, index) =>
        <Character key={index}>{char}</Character>
      )}
    </div>
  );
}

ReactDOM.render(<App />, document.getElementById("root"));
.paragraph {
  display: flex;
}
<div id="root"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>