& nbsp jsx nie działa


101

Używam tagu & nbsp w jsx i nie renderuje spacji. Poniżej znajduje się mały fragment mojego kodu, proszę o pomoc.

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

});

Czy szukałeś? Pierwsze trafienie: google.com/search?q=react+html+entities
Felix Kling

Nie sądzę, że jest coś złego w Twoim kodzie. Która wersja Babel i React jest używana? Upewnij się, że korzystasz z najnowszych wersji. Możesz zobaczyć w odpowiedzi Babel, że wygenerowany kod zawiera nierozdzielające białe znaki.
Felix Kling

Cóż, teraz pierwszy hit jest taki. :) duckduckgo.com/?q=jsx+nbsp
Marc Stober

Odpowiedzi:


212

Zobacz: JSX w głębi

Próbować: Select Scenario:{'\u00A0'}

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

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

jsfiddle

Aktualizacja

Po obejrzeniu niektórych komentarzy i wypróbowaniu tego. Zwróciło moją uwagę, że używanie html entites wewnątrz JSX działa dobrze (w przeciwieństwie do tego, co jest napisane w powyższym dokumencie jsx-gotchas [może jest nieaktualne]).

Więc użycie czegoś takiego jak:, R&amp;Dspowoduje wyświetlenie: „R&D”. Występuje dziwne zachowanie &nbsp;, które powoduje, że renderuje się inaczej, przez co myślę, że nie działa:

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

Produkuje:

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

8
Więc odpowiedzią jest użycie wartości Unicode odpowiadającej encji html i użycie jej w ciągu javascript. Dzięki za pomoc.
Indraneel Bende

@IndraneelBende &nbsp;powinno działać dobrze. Wystąpił problem z wartością atrybutu style.
Gaurav Kumar

@Gaurav Kumar, próbowałem też nie działa, jest po prostu ignorowany. Czy mógłbyś dodać do skrzypiec w mojej odpowiedzi?
omerts

1
<div>Doesn't work: -&nbsp;-</div>dla mnie działa dobrze. edycja: Cóż, nie wydaje się, aby była to niezłamująca przestrzeń.
Felix Kling

Mmh, produkuje jednak oczekiwane wyniki na samej stronie Reacta ...
Felix Kling


17

Napisz swój jsxkod opakowany, { }jak pokazano poniżej.

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

Możesz tu wstawić spację lub dowolny znak specjalny.

np. w twoim przypadku

Select Takeout Scenario:&nbsp;

tak powinno być

Select Takeout Scenario:{' '}

To będzie działać.

Jako rada, której nie powinieneś używać &nbspdo dodawania dodatkowej przestrzeni, możesz użyć CSS, aby osiągnąć to samo.


2
To tylko po to, aby dodać spacje, ale nie będzie działać dla innych encji html
omerts

5
To jednak nie jest niezłomna przestrzeń.
TimoSolo

1
@TimoSolo Nie zachęcam do korzystania z & nbsp lub wyżej wymienionej techniki. Możesz spróbować pierwszej odpowiedzi, jeśli moja nie działa. Dzięki.
WitVault

„użyj CSS, aby osiągnąć to samo” - Możesz używać nierozdzielającej spacji, aby tekst nie spadał do następnej linii i poza granice elementu, który zawiera tekst. Jeśli zamiast tego chcesz użyć właściwości CSS, możesz to zrobić jednym ze sposobów text-overflow: "clip"; overflow: "hidden";. Dostępnych jest kilka odmian.
Dan Cron

4

Jeśli to nie zadziała, {' '}użyj {'\u00A0'}.

{' '}wyrenderuje spację, ale są przypadki, w których chcesz, aby wysokość linii była również renderowana w przypadku, gdy potrzebujesz spacji wewnątrz elementu HTML, który nie ma innego tekstu, np .: <span style={{ lineHeight: '1em' }}>{' '}</span>w takim przypadku będziesz musiał użyć {'\u00A0'}wewnątrz span lub element HTML.


1

Spróbuj użyć utf-8 nbsp, wydaje się być prostą spacją, ale działa dobrze bez dodatkowego kodu.

Może powinieneś stworzyć do tego zmienną.

Kopiowanie symboli: https://unicode-table.com/en/00A0/

Aby automatycznie generować teksty, użyj typografu.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.