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

});
Indraneel Bende
quelle
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:-  -
omerts
quelle
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.

WitVault
quelle
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
16

{'\u00A0'}funktioniert, ist aber schwer zu lesen, deshalb habe ich es in eine Funktionskomponente eingeschlossen :

Komponenten / nbsp.js:

export default () => '\u00A0';

Verwendung:

Hello<Nbsp />world
Dmitry Pashkevich
quelle
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.

Cory Robinson
quelle
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.

unic
quelle
0

Sie können auch ES6-Vorlagenliterale verwenden, z.

`   <li></li>` or `  ${value}`
Hemadri Dasari
quelle
Was hat diese Antwort mit HTML-Entitäten zu tun?
Bootscodierer