У меня есть некоторые реквизиты, в которых есть строка, которая может содержать такие символы, как &. Он также содержит пробелы. Я хочу заменить все пробелы на
.
Есть ли простой способ сделать это? Имейте в виду, что я не могу просто выполнить рендеринг с использованием этого синтаксиса:
<div dangerouslySetInnerHTML={{__html: myValue}} />
потому что сначала мне пришлось бы заменить любые HTML-объекты их разметкой. Я не хочу этого делать, это кажется слишком низким уровнем.
Как я могу это сделать?
 l;
, вы хотите отображать HTML-теги буквально или вы хотите что-то еще сделать?myValue
доступно. Вы можете дождаться его в соответствующей функции жизненного цикла, проанализировать его и установитьparsed
флаг, предотвращающий многократный синтаксический анализ.dangerouslySetInnerHTML
метод. Я действительно не вижу способа обойти это, поскольку вы можете использовать javascript для создания строки, заменяющей пробелы на & nbsp; но без использованияdangerouslySetInnerHTML
метода они будут экранированы с помощью реакции.Ответы:
Вместо использования
объекта HTML вы можете использовать символ Unicode, который
относится к (U + 00A0 NON-BREAKING SPACE):<div>{myValue.replace(/ /g, "\u00a0")}</div>
источник
Я знаю, что это старый вопрос, и это не совсем то, что вы просили, но вместо того, чтобы редактировать строку, то, что вы хотите достичь, вероятно, будет лучше решено с помощью
white-space: nowrap
атрибута CSS :В html:
<div style="white-space: nowrap">This won't break lines</div>
В ответ:
<div style={{ whiteSpace: 'nowrap' }}>{myValue}</div>
источник
Если вы хотите отобразить красивый 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> )
источник
Что ж, здесь очень сложно набирать текст, чтобы он не исчез, поэтому я добавляю немного пробелов, чтобы все могли его увидеть. Если вы удалите пробел из этого тега <nbsp />, вы сможете использовать неразрывный пробел в React.
React переводит этот тег JSX в неразрывный пробел. Странная причуда: это также необходимо использовать в той же строке, что и текст, который вы хотите разместить. Кроме того, неразрывные пробелы с этим тегом не складываются в React.
источник
Warning: The tag <nbsp> is unrecognized in this browser. If you meant to render a React component, start its name with an uppercase letter
Чтобы удалить пробел между строкой, у меня работает код ниже. например: "afee dd" результат: "afeedd"
{myValue.replace (/ \ s + / g, '')}источник
Итак, у вас есть такое значение, как "Hello world", и мы скажем, что оно в
this.props.value
.Ты можешь это сделать:
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
источник