我理解如何(和why)在JSX中添加空白,但我想知道什么是最佳实践,或者是否有任何真正的区别?

Wrap both elements in a span

<div className="top-element-formatting">
  <span>Hello </span>
  <span className="second-word-formatting">World!</span>
</div>

Add them on one line

  <div className="top-element-formatting">
    Hello <span className="second-word-formatting">World!</span>
  </div>

Add space with JS

<div className="top-element-formatting">
    Hello {" "}
    <span className="second-word-formatting">World!</span>
</div>

推荐答案

因为&nbsp会让你有不间断的空格,所以你应该只在必要的地方使用它.在大多数情况下,这会产生意想不到的副作用.

旧版本的React,我相信v14之前的所有版本,在标签中有换行符时会自动插入<span> </span>.

虽然他们不再这样做了,但这是在您自己的代码中处理此问题的安全方法.除非你有专门针对span的款式(通常是不好的做法),否则这是最安全的路由.

根据你的例子,你可以把它们放在一行上,因为它很短.在长线场景中,您可能应该这样做:

  <div className="top-element-formatting">
    Hello <span className="second-word-formatting">World!</span>
    <span> </span>
    So much more text in this box that it really needs to be on another line.
  </div>

这种方法对于自动修剪文本编辑器也是安全的.

另一种方法是使用不插入随机HTML标记的{' '}.在设置样式、突出显示元素以及从DOM中移除杂乱内容时,这可能会更有用.如果您不需要向后兼容React v14或更早版本,这应该是您的首选方法.

  <div className="top-element-formatting">
    Hello <span className="second-word-formatting">World!</span>
    {' '}
    So much more text in this box that it really needs to be on another line.
  </div>

Reactjs相关问答推荐

使用setInterval判断数据的时间,然后在过期后从对象中删除;遇到性能问题

404使用GitHub操作部署Next.js应用程序时出错

在Reaction中测试条件组件

通过单击具有此值的按钮将值添加到数组对象键

在Reaction常量函数中未更新状态变量

如何访问子集合中的文档?

使用下一步中的路由/导航不会立即加载路由

是否在Extra Reducer完成作业(job)时触发createListenerMiddleware?

获取未捕获的错误:Gatsby生产版本上的最小化react 错误#418

在React中使用映射创建flex组件

如何在不同的路由中渲染相同的页面组件(包括 getServerSideProps)

react :输入失go 焦点,输入一个字符,

React - 如何重定向页面以显示数据修改?

类型错误:类型typeof import(js-cookie)上不存在属性get

位于组件material-ui中的TextField中的 map 功能不起作用

如何在 ChartJS 中操作 Y 轴

自动重新获取不起作用 - RTK 查询

错误:无效挂钩调用.钩子只能在函数组件的主体内部调用.使用 next/router 时

如何将本地视频文件上传到 Google Cloud

react / firebase 基地.如何在我的项目中保存更新的数据?