Eu tenho alguns adereços que tem uma string que pode conter caracteres como &. Ele também contém espaços. Desejo substituir todos os espaços por
.
Existe uma maneira fácil de fazer isso? Lembre-se de que não posso apenas renderizar usando esta sintaxe:
<div dangerouslySetInnerHTML={{__html: myValue}} />
porque primeiro eu teria que substituir quaisquer entidades HTML por sua marcação. Eu não quero ter que fazer isso, parece um nível muito baixo.
Existe uma maneira de fazer isso?
 l;
, deseja exibir as tags HTML literalmente ou há outra coisa que deseja fazer?myValue
está acessível. Você pode esperar por ele na função de ciclo de vida apropriada, analisá-lo e definir umparsed
sinalizador que evite análises múltiplas.dangerouslySetInnerHTML
método. Não vejo uma maneira de contornar isso, pois você pode usar javascript para criar uma string substituindo os espaços por & nbsp; mas sem usar odangerouslySetInnerHTML
método, eles escaparão por react.Respostas:
Em vez de usar a
entidade HTML, você pode usar o caractere Unicode que
se refere a (U + 00A0 NON-BREAKING SPACE):<div>{myValue.replace(/ /g, "\u00a0")}</div>
fonte
Eu sei que esta é uma questão antiga, e isso não faz exatamente o que você pediu, mas em vez de editar a string, o que você deseja alcançar provavelmente será resolvido melhor usando o
white-space: nowrap
atributo CSS :Em html:
<div style="white-space: nowrap">This won't break lines</div>
Em reação:
<div style={{ whiteSpace: 'nowrap' }}>{myValue}</div>
fonte
Se você deseja exibir um xml bonito:
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> )
fonte
Bem, é muito difícil digitar aqui sem que ele desapareça, então estou adicionando um pequeno espaço em branco para que todos possam ver. Se você remover o espaço em branco desta tag <nbsp />, poderá usar um espaço ininterrupto no React.
React traduz essa tag JSX em um espaço ininterrupto. Habilidade estranha: isso também deve ser usado na mesma linha do texto que você deseja espaçar. Além disso, os espaços não separáveis com esta tag não se acumulam no React.
fonte
Warning: The tag <nbsp> is unrecognized in this browser. If you meant to render a React component, start its name with an uppercase letter
Para remover o espaço entre as strings, o código abaixo funciona para mim. por exemplo: "afee dd" resultado: "afeedd"
{myValue.replace (/ \ s + / g, '')}fonte
Então você tem um valor como este "Olá, mundo", e diremos que está em
this.props.value
.Você consegue fazer isso:
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
fonte