& nbsp jsx tidak berfungsi

101

Saya menggunakan & nbsp tag di jsx dan tidak memberikan spasi. Berikut ini adalah potongan kecil kode saya. Tolong bantu.

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
sumber
Apakah Anda mencari? Hit pertama: google.com/search?q=react+html+entities
Felix Kling
Saya tidak berpikir ada yang salah dengan kode Anda. Versi Babel dan React mana yang digunakan? Pastikan untuk menggunakan versi terbaru. Anda dapat melihat di repl Babel bahwa kode yang dihasilkan berisi karakter spasi kosong yang tidak melanggar.
Felix Kling
Nah sekarang hit pertama adalah ini. :) duckduckgo.com/?q=jsx+nbsp
Marc Stober

Jawaban:

213

Lihat: JSX In Depth

Mencoba: Select Scenario:{'\u00A0'}

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

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

jsfiddle.dll

Memperbarui

Setelah melihat beberapa komentar, dan mencobanya. Telah menjadi perhatian saya bahwa menggunakan html entites di dalam JSX berfungsi dengan baik (tidak seperti yang disebutkan dalam referensi jsx-gotchas di atas [mungkin sudah usang]).

Jadi menggunakan sesuatu seperti R&amp;D:, akan menghasilkan: 'R&D'. Ada perilaku aneh dengan &nbsp;, yang menyebabkannya dirender secara berbeda, sehingga menyebabkan saya berpikir itu tidak berfungsi:

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

Menghasilkan:

This works simply:- -
This works simply:-  -
omerts
sumber
8
Jadi jawabannya adalah menggunakan nilai unicode yang sesuai dengan entitas html dan menggunakannya di dalam string javascript. Terima kasih atas bantuan Anda.
Indraneel Bende
@ IndraneelBende &nbsp;harus bekerja dengan baik. Ada beberapa masalah dengan nilai dalam atribut gaya.
Gaurav Kumar
@Gaurav Kumar, saya juga mencoba tidak berhasil, hanya diabaikan. Bisakah Anda menambahkan biola dalam jawaban saya?
omerts
1
<div>Doesn't work: -&nbsp;-</div>bekerja dengan baik untuk saya. sunting: Yah, sepertinya bukan ruang yang tidak terputus.
Felix Kling
Mmh, menghasilkan output yang diharapkan di situs web React itu sendiri ...
Felix Kling
19

{'\u00A0'}berfungsi tetapi sulit dibaca, jadi saya membungkusnya dalam komponen fungsi :

komponen / nbsp.js:

export default () => '\u00A0';

pemakaian:

Hello<Nbsp />world

Dmitry Pashkevich
sumber
17

Tulis jsxkode Anda yang dibungkus { }seperti yang ditunjukkan di bawah ini.

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

Anda dapat meletakkan spasi atau karakter khusus apa pun di sini.

misalnya dalam kasus Anda

Select Takeout Scenario:&nbsp;

harus seperti ini

Select Takeout Scenario:{' '}

Ini akan berhasil.

Sebagai Saran Anda tidak boleh menggunakan &nbspuntuk menambah ruang ekstra, Anda dapat menggunakan css untuk mencapai hal yang sama.

WitVault
sumber
2
Ini hanya untuk menambahkan spasi, tetapi tidak akan berfungsi untuk entitas html lainnya
omerts
5
Itu bukan ruang non-break .
TimoSolo
1
@TimoSolo Saya tidak menganjurkan Anda untuk menggunakan & nbsp atau teknik yang disebutkan di atas. Anda dapat mencoba jawaban pertama jika jawaban saya tidak berfungsi. Terima kasih.
WitVault
"gunakan css untuk mencapai yang sama" - Anda mungkin menggunakan spasi tanpa putus sehingga teks Anda tidak turun ke baris berikutnya dan di luar batas elemen yang berisi teks. Jika Anda ingin menggunakan properti CSS untuk melakukan ini, salah satu cara untuk melakukannya adalah text-overflow: "clip"; overflow: "hidden";. Ada beberapa variasi yang tersedia.
Dan Cron
4

Jika ini tidak berhasil untuk Anda, {' '}gunakan {'\u00A0'}.

{' '}akan membuat spasi tetapi ada beberapa kasus ketika Anda ingin tinggi baris juga dirender dalam kasus di sana Anda menginginkan spasi di dalam elemen HTML yang tidak memiliki teks lain yaitu:, <span style={{ lineHeight: '1em' }}>{' '}</span>dalam kasus itu Anda harus menggunakan {'\u00A0'}di dalam span atau elemen HTML.

Cory Robinson
sumber
1

Coba gunakan utf-8 nbsp, tampaknya sebagai ruang yang sederhana, tetapi berfungsi dengan baik tanpa kode tambahan.

Mungkin, Anda harus membuat variabel untuk ini.

Untuk menyalin simbol: https://unicode-table.com/en/00A0/

Untuk menghasilkan teks secara otomatis, gunakan beberapa typograf.

unic
sumber
0

Anda juga dapat menggunakan literal template ES6 yaitu,

`   <li></li>` or `  ${value}`
Hemadri Dasari
sumber
Apa hubungan jawaban ini dengan entitas html?
boatcoder