&nbsp jsx无法正常工作


98

我在jsx中使用&nbsp标记,它没有呈现空间。以下是我的代码的一小段。请帮助。

var Reporting=React.createClass({

  render: function(){
    return(
      <div style={divPositionReporting}>
          <p>Pricing Reports</p>
          <hr></hr>
          Select Scenario:&nbsp;&nbsp;
          <select>
            <option></option>
          </select>
          <button type="button">Get Pricing Report</button>
          <br/>
          Select Takeout Scenario:&nbsp;
          <select>
            <option></option>
          </select>
          <button type="button">Get Pricing Report</button>
          <br/>
      </div>
    );
  },

});

你搜索了吗?首次点击:google.com/search?
q = react + html +

我认为您的代码没有任何问题。使用哪个Babel和React版本?确保使用最新版本。您可以在Babel repl中看到所生成的代码包含不间断的空格字符。
菲利克斯·克林

好吧,第一击就是这个。:) duckduckgo.com/?q=jsx+nbsp
Marc Stober

Answers:


199

另请:深入了解JSX

尝试: Select Scenario:{'\u00A0'}

要么: <div dangerouslySetInnerHTML={{__html: 'Select Scenario: &nbsp;'}} />

要么: <div>&nbsp;</div>

jsfiddle

更新资料

看到一些评论后,尝试一下。引起我注意的是,在JSX中使用html实体可以很好地工作(与以上jsx-gotchas参考文献中所述的内容不同(也许是过时的))。

因此,使用类似:的内容R&amp;D将输出:“ R&D”。的行为异常&nbsp;,导致其呈现方式有所不同,因此我认为它不起作用:

<div>This works simply:-&nbsp;-</div>
<div>This works simply:- {'\u00A0'}-</div>

产生:

This works simply:- -
This works simply:-  -

8
因此,答案是使用与html实体相对应的unicode值,并在javascript字符串内使用它。谢谢你的帮助。
Indraneel Bende

@IndraneelBende &nbsp;应该可以正常工作。样式属性中的值存在一些问题。
Gaurav Kumar

@Gaurav Kumar,我也尝试了没有用,只是被忽略了。您能否在我的答案中加个小提琴?
omerts

1
<div>Doesn't work: -&nbsp;-</div>对我来说很好。编辑:嗯,这似乎不是一个不间断的空间。
菲利克斯·克林

嗯,虽然可以在React网站本身上产生预期的输出...
Felix Kling

17

编写jsx代码{ },如下所示。

<h1>Code {' '}</h1>

您可以在此处放置空格或任何特殊字符。

例如你的情况

Select Takeout Scenario:&nbsp;

应该是这样的

Select Takeout Scenario:{' '}

会的。

作为建议,您不应该&nbsp用来添加额外的空间,可以使用css来实现。


2
这只是添加空格,但不适用于其他HTML实体
omerts,2016年

5
那不是一个不间断的空间。
TimoSolo

1
@TimoSolo我不鼓励您使用&nbsp或上述技术。如果我的系统不起作用,您可以尝试第一个答案。谢谢。
WitVault

“使用css来实现相同效果”-您可能正在使用不间断的空格,以使您的文本不会落到下一行以及包含文本的元素边界之外。如果您想使用CSS属性来执行此操作,则一种方法是text-overflow: "clip"; overflow: "hidden";。有一些可用的变体。
丹·克朗


4

如果这对您不起作用,请{' '}使用{'\u00A0'}

{' '}会呈现一个空格,但是在某些情况下,您还希望在不包含其他文本的HTML元素内包含空格的情况下也要显示行高,例如<span style={{ lineHeight: '1em' }}>{' '}</span>,在这种情况下,您需要{'\u00A0'}在span或HTML元素。


1

尝试使用utf-8 nbsp,看似简单的空间,但无需额外代码即可正常工作。

也许您应该为此创建变量。

对于复制符号: https //unicode-table.com/en/00A0/

要自动生成文本,请使用一些typograf。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.