& nbsp jsx ne fonctionne pas


99

J'utilise la balise & nbsp dans jsx et cela ne rend pas l'espace. Ce qui suit est un petit extrait de mon code. Veuillez aider.

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

});

Avez-vous cherché? Premier coup: google.com/search?q=react+html+entities
— Felix Kling

Je ne pense pas qu'il y ait quelque chose de mal avec votre code. Quelle version de Babel et React utilisent? Assurez-vous d'utiliser les dernières versions. Vous pouvez voir dans la réplique Babel que le code généré contient des espaces blancs insécables.
— Felix Kling

Eh bien maintenant, le premier succès est celui-ci. :) duckduckgo.com/?q=jsx+nbsp
— Marc Stober

Réponses:


202

Voir: JSX en profondeur

Essayer: Select Scenario:{'\u00A0'}

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

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

jsfiddle

Mettre à jour

Après avoir lu certains des commentaires et essayé. Il est venu à mon attention que l'utilisation d'entités html à l'intérieur de JSX fonctionne bien (contrairement à ce qui est indiqué dans la référence jsx-gotchas ci-dessus [peut-être que c'est obsolète]).

Donc, utiliser quelque chose comme R&amp;D:, produirait: 'R&D'. Il y a un comportement étrange avec &nbsp;, qui le rend différemment, me faisant ainsi penser que cela ne fonctionne pas:

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

Produit:

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

8
La réponse consiste donc à utiliser la valeur unicode correspondant à l'entité html et à l'utiliser dans une chaîne javascript. Merci de votre aide.
— Indraneel Bende

@IndraneelBende &nbsp;devrait fonctionner correctement . Il y a un problème avec l'attribut value in style.
— Gaurav Kumar

@Gaurav Kumar, j'ai aussi essayé de ne pas fonctionner, c'est juste ignoré. Pourriez-vous s'il vous plaît ajouter au violon dans ma réponse?
— omerts le

1
<div>Doesn't work: -&nbsp;-</div>fonctionne très bien pour moi. edit: Eh bien, cela ne semble pas être un espace insécable.
— Felix Kling

Mmh, produit la sortie attendue sur le site Web de React lui-même cependant ...
— Felix Kling

17

Écrivez votre jsxcode enveloppé { }comme indiqué ci-dessous.

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

Vous pouvez mettre un espace ou tout autre caractère spécial ici.

par exemple dans votre cas

Select Takeout Scenario:&nbsp;

devrait être comme ça

Select Takeout Scenario:{' '}

Ça va marcher.

Comme conseil, vous ne devriez pas utiliser &nbsppour ajouter de l'espace supplémentaire, vous pouvez utiliser css pour y parvenir.


2
C'est juste pour ajouter des espaces, mais ne fonctionnera pas pour d'autres entités html
— omert le

5
Ce pas insécable espace bien.
— TimoSolo

1
@TimoSolo Je ne vous encourage pas à utiliser & nbsp ou la technique mentionnée ci-dessus. Vous pouvez essayer la première réponse si la mienne ne fonctionne pas. Merci.
— WitVault

"utiliser css pour obtenir la même chose" - Vous utilisez peut-être un espace insécable pour que votre texte ne descende pas à la ligne suivante et en dehors de la limite de l'élément qui contient le texte. Si vous souhaitez utiliser les propriétés CSS pour le faire à la place, une façon de le faire est text-overflow: "clip"; overflow: "hidden";. Il existe quelques variantes disponibles.
— Dan Cron


4

Si cela ne fonctionne pas pour vous, {' '}utilisez {'\u00A0'}.

{' '}rendra un espace mais il y a des cas où vous voulez que la hauteur de ligne soit également rendue dans le cas où vous voulez un espace à l'intérieur d'un élément HTML qui n'a pas d'autre texte, c'est-à-dire:, <span style={{ lineHeight: '1em' }}>{' '}</span>dans ce cas, vous devrez utiliser {'\u00A0'}à l'intérieur du span ou élément HTML.


1

Essayez d'utiliser utf-8 nbsp, semble un espace simple, mais fonctionne bien sans code supplémentaire.

Vous devriez peut-être créer une variable pour cela.

Pour les symboles de copie: https://unicode-table.com/en/00A0/

Pour générer automatiquement des textes, utilisez un typograf.


0

Vous pouvez également utiliser des littéraux de modèle ES6, c'est-à-dire

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

Qu'est-ce que cette réponse a à voir avec les entités html?
— boatcoder
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.