我有一些道具,其字符串可能包含&等字符。它还包含空格。我想用替换所有空格
。
有没有简单的方法可以做到这一点?请记住,我不能只使用以下语法进行渲染:
<div dangerouslySetInnerHTML={{__html: myValue}} />
因为我首先必须用其标记替换任何HTML实体。我不想这样做,它似乎太低了。
有办法吗?
我有一些道具,其字符串可能包含&等字符。它还包含空格。我想用替换所有空格
。
有没有简单的方法可以做到这一点?请记住,我不能只使用以下语法进行渲染:
<div dangerouslySetInnerHTML={{__html: myValue}} />
因为我首先必须用其标记替换任何HTML实体。我不想这样做,它似乎太低了。
有办法吗?
 l;
,你想显示HTML标签字面上还是有别的东西,你想干什么?
myValue
可以访问。您可以在适当的生命周期函数中等待它,对其进行解析并设置一个parsed
阻止多次解析的标志。
dangerouslySetInnerHTML
方法。我真的没有办法解决这个问题,因为您可以使用javascript创建一个字符串,以&nbsp;代替空格。但是如果不使用该dangerouslySetInnerHTML
方法,它们将通过react逃脱。
Answers:
代替使用
HTML实体,可以使用
引用(U + 00A0 NON-BREAKING SPACE)的Unicode字符:
<div>{myValue.replace(/ /g, "\u00a0")}</div>
我知道这是一个老问题,它不能完全满足您的要求,但是与其编辑字符串,不如通过CSSwhite-space: nowrap
属性更好地解决您想要实现的问题:
在html中:
<div style="white-space: nowrap">This won't break lines</div>
在反应:
<div style={{ whiteSpace: 'nowrap' }}>{myValue}</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
因此,您具有像“ 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>;