& nbsp jsx не працює


101

Я використовую тег & nbsp у jsx, і він не відображає простір. Далі - невеликий фрагмент мого коду. Будь ласка, допоможіть.

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

});

Ви шукали? Перше звернення: google.com/search?q=react+html+entities
Фелікс Клінг,

Я не думаю, що з вашим кодом щось не так. Яку версію Babel та React використовуєте? Обов’язково використовуйте найновіші версії. Ви можете побачити в Babel repl, що згенерований код містить нерозривні пробіли.
Фелікс Клінг,

Ну, а зараз перший удар - це. :) duckduckgo.com/?q=jsx+nbsp
Марк Стобер

Відповіді:


209

Див .: JSX у глибині

Спробуйте: Select Scenario:{'\u00A0'}

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

Або: <div>&nbsp;</div>

jsfiddle

Оновлення

Побачивши деякі коментарі та спробувавши їх. Я прийшов до моєї уваги, що використання html-entites всередині JSX працює нормально (на відміну від того, що зазначено у наведеному вище посиланні jsx-gotchas [можливо, воно застаріло]).

Тож, використовуючи щось на зразок:, R&amp;Dбуде виведено: 'R&D'. Існує дивна поведінка, з-за &nbsp;якої він відображається по-іншому, що змушує мене думати, що це не працює:

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

Виробляє:

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

8
Отже, відповідь полягає у використанні значення unicode, що відповідає сутності html, і використанні його всередині рядка javascript. Спасибі за вашу допомогу.
Indraneel Bende

@IndraneelBende &nbsp;повинен працювати нормально. Існує певна проблема зі значенням у атрибуті style.
Гаурав Кумар,

@Gaurav Kumar, я також намагався не працювати, це просто ігнорується. Не могли б ви додати до скрипки у моїй відповіді?
омерц

1
<div>Doesn't work: -&nbsp;-</div>для мене прекрасно працює редагувати: Ну, здається, це непробивний простір.
Фелікс Клінг

Mmh, видає очікуваний результат на самому веб-сайті React, хоча ...
Фелікс Клінг,


17

Напишіть свій jsxкод, загорнувшись, { }як показано нижче.

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

Ви можете помістити тут пробіл або будь-який спеціальний символ.

наприклад у вашому випадку

Select Takeout Scenario:&nbsp;

має бути таким

Select Takeout Scenario:{' '}

Це спрацює.

Як пораду, яку ви не повинні використовувати, &nbspщоб додати додатковий простір, ви можете використовувати css, щоб досягти того ж.


2
Це просто для додавання пробілу, але не буде працювати для інших html-сутностей
omerts

5
Це не нерозривний простір, хоча.
TimoSolo

1
@TimoSolo Я не закликаю вас використовувати & nbsp або вищезгадану техніку. Ви можете спробувати першу відповідь, якщо моя не працює. Дякую.
WitVault

"використовувати css для досягнення того ж" - Ви, можливо, використовуєте нерозривний простір, щоб ваш текст не опускався до наступного рядка та не виходив за межі елемента, що містить текст. Якщо ви хочете для цього використовувати властивості CSS, то один із способів це зробити text-overflow: "clip"; overflow: "hidden";. Є кілька варіантів.
Ден Крон,

4

Якщо це не працює для вас, {' '}використовуйте {'\u00A0'}.

{' '}буде відображати пробіл, але є деякі випадки, коли ви хочете, щоб висота рядка також відображалася у випадку, коли ви хочете простір всередині елемента HTML, який не має іншого тексту, тобто:, <span style={{ lineHeight: '1em' }}>{' '}</span>у цьому випадку вам потрібно буде використовувати {'\u00A0'}всередині span або елемент HTML.


1

Спробуйте використовувати utf-8 nbsp, здається простим простором, але працює добре без додаткового коду.

Можливо, вам слід створити змінну для цього.

Для символів копіювання: https://unicode-table.com/en/00A0/

Для автоматичного створення текстів використовуйте певний типограф.


0

Ви також можете використовувати літерали шаблонів ES6, тобто,

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

Яке відношення має ця відповідь до HTML-сутностей?
boatcoder
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.