& nbsp jsx funktioniert nicht


95

Ich verwende das & nbsp-Tag in jsx und es rendert den Speicherplatz nicht. Das Folgende ist ein kleiner Ausschnitt meines Codes. Bitte helfen Sie.

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>
    );
  },

});

Hast du gesucht? Erster Treffer: google.com/search?q=react+html+entities
Felix Kling

Ich glaube nicht, dass irgendetwas mit Ihrem Code nicht stimmt. Welche Babel- und React-Version wird verwendet? Stellen Sie sicher, dass Sie die neuesten Versionen verwenden. Sie können in der Babel-Antwort sehen, dass der generierte Code nicht unterbrechende Leerzeichen enthält.
Felix Kling

Nun ist der erste Treffer dies. :) duckduckgo.com/?q=jsx+nbsp
Marc Stober

Antworten:


195

Siehe: JSX im Detail

Versuchen: Select Scenario:{'\u00A0'}

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

Oder: <div>&nbsp;</div>

jsfiddle

Aktualisieren

Nachdem ich einige der Kommentare gesehen und ausprobiert habe. Es ist mir aufgefallen, dass die Verwendung von HTML-Entiten in JSX gut funktioniert (im Gegensatz zu dem, was in der obigen jsx-gotchas-Referenz angegeben ist [möglicherweise ist es veraltet]).

Wenn Sie also etwas wie: verwenden R&amp;D, wird Folgendes ausgegeben: 'F & E'. Es gibt ein seltsames Verhalten bei &nbsp;, das dazu führt, dass es anders gerendert wird, sodass ich denke, dass es nicht funktioniert:

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

Produziert:

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

8
Die Antwort besteht also darin, den Unicode-Wert zu verwenden, der der HTML-Entität entspricht, und ihn in einer Javascript-Zeichenfolge zu verwenden. Danke für Ihre Hilfe.
Indraneel Bende

@IndraneelBende &nbsp;sollte gut funktionieren. Es gibt ein Problem mit dem Wert im Stilattribut.
Gaurav Kumar

@Gaurav Kumar, ich habe auch versucht, nicht funktioniert, es wird einfach ignoriert. Könnten Sie bitte die Geige in meiner Antwort ergänzen?
Omerts

1
<div>Doesn't work: -&nbsp;-</div>funktioniert gut für mich. edit: Nun, es scheint kein ununterbrochener Raum zu sein.
Felix Kling

Mmh, produziert die erwartete Ausgabe auf der React-Website selbst ...
Felix Kling

16

Schreiben Sie Ihren jsxCode { }wie unten gezeigt ein.

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

Hier können Sie Leerzeichen oder Sonderzeichen einfügen.

zB in deinem Fall

Select Takeout Scenario:&nbsp;

sollte so sein

Select Takeout Scenario:{' '}

Es wird klappen.

Als Hinweis, den Sie nicht verwenden sollten &nbsp, um zusätzlichen Speicherplatz hinzuzufügen, können Sie CSS verwenden , um dies zu erreichen.


2
Dies ist nur zum Hinzufügen von Leerzeichen, funktioniert aber nicht für andere HTML-Entitäten
omerts

5
Das ist aber kein ununterbrochener Raum.
TimoSolo

1
@ TimoSolo Ich empfehle Ihnen nicht, & nbsp oder eine der oben genannten Techniken zu verwenden. Sie können die erste Antwort versuchen, wenn meine nicht funktioniert. Vielen Dank.
WitVault

"Verwenden Sie CSS, um dasselbe zu erreichen" - Möglicherweise verwenden Sie nicht unterbrechendes Leerzeichen, damit Ihr Text nicht in die nächste Zeile und außerhalb der Grenze des Elements fällt, das den Text enthält. Wenn Sie stattdessen CSS-Eigenschaften verwenden möchten, können Sie dies unter anderem tun text-overflow: "clip"; overflow: "hidden";. Es stehen einige Variationen zur Verfügung.
Dan Cron


4

Wenn dies nicht für Sie arbeiten {' '}dann verwenden {'\u00A0'}.

{' '}wird ein Leerzeichen rendern, aber es gibt einige Fälle, in denen Sie möchten, dass die Zeilenhöhe auch in einem Fall gerendert wird, in dem Sie ein Leerzeichen in einem HTML-Element haben möchten, das keinen anderen Text enthält, dh: <span style={{ lineHeight: '1em' }}>{' '}</span>In diesem Fall müssen Sie es {'\u00A0'}innerhalb von verwenden span oder HTML-Element.


1

Versuchen Sie, utf-8 nbsp zu verwenden. Dies scheint ein einfacher Speicherplatz zu sein, funktioniert jedoch ohne zusätzlichen Code.

Vielleicht sollten Sie dafür eine Variable erstellen.

Für Kopiersymbole: https://unicode-table.com/de/00A0/

Verwenden Sie zum automatischen Generieren von Texten einige Typografien.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.