J'ai des accessoires qui ont une chaîne qui pourrait contenir des caractères tels que &. Il contient également des espaces. Je souhaite remplacer tous les espaces par
.
Y a-t-il un moyen simple de le faire? Gardez à l'esprit que je ne peux pas simplement effectuer le rendu en utilisant cette syntaxe:
<div dangerouslySetInnerHTML={{__html: myValue}} />
car je devrais d'abord remplacer toutes les entités HTML par leur balisage. Je ne veux pas avoir à faire ça, ça me paraît trop bas niveau.
Est-ce que je peux faire ça?
 l;
, voulez-vous afficher les balises HTML littéralement ou voulez-vous faire autre chose?myValue
est accessible. Vous pouvez l'attendre dans la fonction de cycle de vie appropriée, l'analyser et définir unparsed
indicateur qui empêche l'analyse multiple.dangerouslySetInnerHTML
méthode. Je ne vois pas vraiment de solution car vous pouvez utiliser javascript pour créer une chaîne en remplaçant les espaces par & nbsp; mais sans utiliser ladangerouslySetInnerHTML
méthode, ceux-ci seront échappés par react.Réponses:
Au lieu d'utiliser l'
entité HTML, vous pouvez utiliser le caractère Unicode qui
fait référence à (U + 00A0 NON-BREAKING SPACE):<div>{myValue.replace(/ /g, "\u00a0")}</div>
la source
Je sais que c'est une vieille question, et cela ne fait pas exactement ce que vous avez demandé, mais plutôt que de modifier la chaîne, ce que vous voulez obtenir est probablement mieux résolu en utilisant le CSS
white-space: nowrap
attribut :En html:
<div style="white-space: nowrap">This won't break lines</div>
En réaction:
<div style={{ whiteSpace: 'nowrap' }}>{myValue}</div>
la source
Si vous souhaitez afficher un joli xml:
var str = "<test>\n\t\t<value>1</value>\n</test>\n".replace(/</g, '<').replace(/>/g, '>').replace(/\t/g, "\u00a0").replace(/\n/g, '<br/>'); return ( <div dangerouslySetInnerHTML={{__html: str}} ></div> )
la source
Eh bien, il est très difficile de taper ici sans qu'il disparaisse, alors j'ajoute un petit espace pour que tout le monde puisse le voir. Si vous supprimez l'espace blanc de cette balise <nbsp />, vous pourrez utiliser un espace insécable dans React.
React traduit cette balise JSX en un espace insécable. Bizarre bizarrerie: cela doit également être utilisé sur la même ligne que le texte que vous souhaitez espacer. De plus, les espaces insécables avec cette balise ne s'empilent pas dans React.
la source
Warning: The tag <nbsp> is unrecognized in this browser. If you meant to render a React component, start its name with an uppercase letter
Pour supprimer l'espace entre la chaîne, le code ci-dessous fonctionne pour moi. par exemple: "afee dd" résultat: "afeedd"
{maValeur.replace (/ \ s + / g, '')}la source
Vous avez donc une valeur comme celle-ci "Hello world", et nous dirons que c'est dans
this.props.value
.Tu peux le faire:
var parts = this.props.value.split(" "), array = []; for (var i=0; i<parts.length; i++){ // add the string array.push(<span key={i * 2}>{parts[i]}</span>); // add the nbsp array.push(<span key={i * 2 + 1}> </span>); } // remove the trailing nbsp array.pop(); return <div>{array}</div>;
jsbin
la source