我想在其中包含一个包含a
个标记的HTML字符串,为它们分配事件处理程序,然后渲染它们。示例html:
This is a sample blog post with HTML. <a data-id="1">Click here.</a>
我可以使用jQuery来解析这个HTML字符串并插入事件(或道具或其他任何东西),如下所示:
This is a sample blog post with HTML. <a data-id="1" ref="myClick" onClick={this.handleClick}>Click here.</a>
现在我要呈现它:
return (
<div>
<p dangerouslySetInnerHTML={{__html: theHtml}}></p>
</div>
);
但是这会渲染原始HTML而没有任何React魔法。如何将HTML /格式创建为字符串然后正常呈现?
答案 0 :(得分:0)
没有好办法做到这一点。我能想到的最好的方法是将字符串解析为html ast,然后从中创建虚拟dom。这不是很快或很容易做到的。
除此之外,您的选择是:
第二颗子弹的例子:
componentDidMount: function(){
var el = this.getDOMNode();
// add a click listener to the first <a> child
el.querySelector('a').addEventListener('click', this.aClick)
},
componentWillUnmount: function(){
var el = this.getDOMNode();
el.querySelector('a').removeEventListener('click', this.aClick)
},
aClick: function(event){ ... }