& nbsp jsx non funziona


99

Sto usando il tag & nbsp in jsx e non esegue il rendering dello spazio. Quello che segue è un piccolo frammento del mio codice. Per favore aiuto.

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

});


Non credo ci sia nulla di sbagliato nel tuo codice. Quale versione di Babel e React stai usando? Assicurati di utilizzare le ultime versioni. Puoi vedere in Babel repl che il codice generato contiene caratteri di spazio bianco univoci.
Felix Kling

Bene, ora il primo colpo è questo. :) duckduckgo.com/?q=jsx+nbsp
Marc Stober

Risposte:


200

Vedi: JSX in profondità

Provare: Select Scenario:{'\u00A0'}

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

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

jsfiddle

Aggiornare

Dopo aver visto alcuni commenti e averlo provato. È venuto alla mia attenzione che l'uso di entites html all'interno di JSX funziona bene (a differenza di quanto affermato nel riferimento jsx-gotchas sopra [forse è obsoleto]).

Quindi usare qualcosa come R&amp;D:, produrrebbe: "R&D". C'è un comportamento strano con &nbsp;, che fa sì che il rendering in modo diverso, facendomi pensare che non funzioni:

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

Produce:

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

8
Quindi la risposta è usare il valore unicode corrispondente all'entità html e usarlo all'interno di una stringa javascript. Grazie per l'aiuto.
Indraneel Bende

@IndraneelBende &nbsp;dovrebbe funzionare bene. C'è qualche problema con il valore nell'attributo style.
Gaurav Kumar

@ Gaurav Kumar, ho anche provato a non funzionare, è stato semplicemente ignorato. Per favore, potresti aggiungere qualcosa al violino nella mia risposta?
omerts

1
<div>Doesn't work: -&nbsp;-</div>funziona bene per me. modifica: Beh, non sembra essere uno spazio unificatore.
Felix Kling

Mmh, produce l'output previsto sul sito Web di React stesso però ...
Felix Kling,

17

Scrivi il tuo jsxcodice racchiuso { }come mostrato di seguito.

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

Puoi mettere spazio o qualsiasi carattere speciale qui.

ad esempio nel tuo caso

Select Takeout Scenario:&nbsp;

dovrebbe essere così

Select Takeout Scenario:{' '}

Funzionerà.

Come consiglio non dovresti usare &nbsp per aggiungere spazio extra, puoi usare css per ottenere lo stesso.


2
Questo è solo per aggiungere spazi bianchi, ma non funzionerà per altre entità html
omerts

5
Quello non è uno spazio univoco però.
TimoSolo

1
@TimoSolo non ti incoraggio a usare & nbsp o la tecnica sopra menzionata. Puoi provare la prima risposta se la mia non funziona. Grazie.
WitVault

"usa CSS per ottenere lo stesso risultato" - Potresti usare uno spazio unificatore in modo che il tuo testo non scenda alla riga successiva e al di fuori del confine dell'elemento che contiene il testo. Se invece vuoi usare le proprietà CSS per farlo, allora un modo per farlo è text-overflow: "clip"; overflow: "hidden";. Sono disponibili alcune varianti.
Dan Cron


4

Se questo non funziona per te, {' '}usa {'\u00A0'}.

{' '}renderà uno spazio ma ci sono alcuni casi in cui vuoi che l'altezza della riga sia resa anche in un caso lì vuoi uno spazio all'interno di un elemento HTML che non ha altro testo cioè:, <span style={{ lineHeight: '1em' }}>{' '}</span>in quel caso dovrai usare {'\u00A0'}all'interno del span o elemento HTML.


1

Prova a usare utf-8 nbsp, sembra uno spazio semplice, ma funziona bene senza codice aggiuntivo.

Forse dovresti creare una variabile per questo.

Per i simboli di copia: https://unicode-table.com/en/00A0/

Per generare automaticamente i testi, usa alcuni typograf.


0

Puoi anche utilizzare i letterali modello ES6, ad esempio

`   <li></li>` or `  ${value}`

Cosa ha a che fare questa risposta con le entità html?
boatcoder
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.