2016-10-26 16 views
9

JSXで空白を追加する方法(およびwhy)は理解していますが、スパンでJSXで空白を追加するときのベストプラクティス

ラップの両方の要素

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

はJS

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

あなたは必要ありません。余分なスパン、Reactはテキストノードの長時間の問題を修正しました。例は大丈夫です –

+1

定義済みの "ベストプラクティス"があることはわかりません - 確かに ''タグですべてをラップする必要はありませんが、一般的には空白について心配するときは一般的なHTMLの習慣に従います。 – arthurakay

答えて

7

&nbspは、改行しないスペースがあるため、必ず使用する必要があります。ほとんどの場合、意図しない副作用があります。

古いバージョンのReactは、タグ内に改行があったときにv14より前のすべてのバージョンが自動的に<span> </span>を挿入すると考えています。

これはもはやこれを実行しませんが、これはあなた自身のコードでこれを処理する安全な方法です。 span(一般的に悪い習慣)を特に対象とするスタイリングがない限り、これは最も安全なルートです。

例によっては、かなり短いため、それらを1行にまとめることができます。長いラインのシナリオでは、これはおそらくそれを行うべきかです:

<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> 
3

I Tとのスペースを追加1行に

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

をそれらを追加します。使い終わり&nbsp;

私は見つけた空白を追加するのが最も混乱する方法ですが、空白をどれだけ追加するかを絶対に制御できます。

私は5にスペースを追加したい場合は:それは私が後でコードの週に戻ってくるときに私はここでやろうとしている正確に何を識別するのは簡単です

Hello&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span className="second-word-formatting">World!</span>

+1

実際には、タイポグラフィ的に意味のある5つの非区切りスペースの使用が考えられますが、このような場合を除いて、実際に使用するのは間違いです。これをレイアウトに使用している場合は、代わりにCSSを使用する必要があります。ただし、スペースを追加する必要があるが、改行しないようにする必要がある場合は、より多くの字体的な意味を持つスペースがたくさんあります。 例:https://stackoverflow.com/questions/8515365/are-there-other-whitespace-codes-like-nbsp-for-half-spaces-em-spaces-en-space – guioconnor

3

あなたはテンプレートリテラル使用することができます。私たちは、式(中括弧内のコード)でリテラルを使用することができます

{` `} // Notice this sign " ` ",its not normal quotes. 

を:

`${2 * a + b}.?!=-` 
+0

In Reactのどのバージョンがあなたのために機能しますか?これを無視するように見える15.6.2。 – smhg

+0

@smhg yo。それは反応のバージョンに依存しません。 ecmascript、typescriptのそのfeautere。 あなたのtemlateがOKであるかどうかをテストするために、Chromeコンソールにテンプレートを入力できます。バベルの設定にも問題がある可能性があります。 –

関連する問題