我正在向一个组件传递一些文本:
<Component
text={`text with <span style={{fontWeight:bold}}>${thisPart}</span> emphasized`}
/>
虽然它肯定不起作用,但我猜这表明了我的意图。有什么办法让它起作用吗?
我正在向一个组件传递一些文本:
<Component
text={`text with <span style={{fontWeight:bold}}>${thisPart}</span> emphasized`}
/>
虽然它肯定不起作用,但我猜这表明了我的意图。有什么办法让它起作用吗?
dangerouslySetInnerHTML
进行此操作。那是一个反模式。<MyComponent>
<span>text with</span>
<strong>{thisPart}</strong>
<span>emphasized</span>
</MyComponent>
MyComponent的children
属性可以访问2个span
元素和1个strong
元素。
class MyComponent extends React.Component {
render () {
return (
<div>
<p>some text</p>
<p>{this.props.children}</p>
</div>
)
}
}
将会呈现
<div>
<p>some text</p>
<p>
<span>text with</span>
<strong>this part</strong>
<span>emphasized</span>
</p>
</div>
dangerouslySetInnerHTML
是React用于替换在浏览器DOM中使用innerHTML的方法。通常情况下,从代码设置HTML是很危险的,因为很容易无意中将用户暴露于跨站脚本(XSS)攻击。因此,您可以直接从React设置HTML,但您必须键入dangerouslySetInnerHTML
并传递一个具有__html键的对象,以提醒自己这很危险。例如:
function createMarkup() {
return {__html: 'First · Second'};
}
function MyComponent() {
return <div dangerouslySetInnerHTML={createMarkup()} />;
}