&nbsp jsxが機能しない


99

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
Felix Kling

コードに問題はないと思います。どのBabelとReactのバージョンを使用していますか?必ず最新バージョンを使用してください。生成されたコードに改行しない空白文字が含まれていることがBabel replで確認できます。
Felix Kling

さて今最初のヒットはこれです。:) duckduckgo.com/?q=jsx+nbsp
Marc Stober

回答:


200

参照: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;は正常に動作するはずです。style属性の値に問題があります。
Gaurav Kumar

@Gaurav Kumar、私も試しましたがうまくいきませんでした、それは単に無視されます。私の答えのフィドルに追加していただけませんか?
omerts

1
<div>Doesn't work: -&nbsp;-</div>私にとってはうまくいきます。編集:まあ、それはノンブレークスペースではないようです。
Felix Kling 2016年

うーん、React Webサイト自体に期待される出力を生成します...
Felix Kling

17

あなたの書くjsxに包まれたコードを{ }以下に示すように。

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

ここにスペースや特殊文字を入れることができます。

例えばあなたの場合

Select Takeout Scenario:&nbsp;

このようになるはずです

Select Takeout Scenario:{' '}

それが動作します。

&nbsp余分なスペースを追加するために使用すべきではないアドバイスとして、CSSを使用して同じことを実現できます。


2
これは単に空白を追加するだけですが、他のhtmlエンティティでは機能しません
omerts

5
しかし、それは非破壊的なスペースではありません。
TimoSolo 2017

1
@TimoSolo&nbspまたは上記の手法を使用することはお勧めしません。私がうまくいかない場合は、最初の答えを試すことができます。ありがとう。
WitVault 2017

「cssを使用して同じにする」-テキストが次の行にドロップダウンせず、テキストを含む要素の境界の外側にないように、改行しないスペースを使用している可能性があります。代わりにCSSプロパティを使用してこれを行う場合、これを行う1つの方法はtext-overflow: "clip"; overflow: "hidden";です。利用可能ないくつかのバリエーションがあります。
Dan Cron


4

これでうまくいかない場合は{' '}、を使用してください{'\u00A0'}

{' '}はスペースをレンダリングしますが、他のテキストを持たないHTML要素内にスペースが必要な場合に行の高さもレンダリングしたい場合があります。つまり<span style={{ lineHeight: '1em' }}>{' '}</span>、の場合、{'\u00A0'}内部で使用する必要がありますスパンまたはHTML要素。


1

utf-8 nbspを使用してみてください。単純なスペースのように見えますが、余分なコードがなくてもうまく機能します。

たぶん、このための変数を作成する必要があります。

コピーシンボルの場合:https : //unicode-table.com/en/00A0/

テキストを自動的に生成するには、いくつかのタイポグラフを使用します。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.