react用正则匹配字符串,并给其添加一个标签,标签无法被浏览器渲染(可点击看例子)
有一段字符串例如:
var str ="这是一个 react 项目,没事我就会segmentfault,然后我还会去谷歌";
想要在页面展示成:
<li>这是一个 react 项目,没事我就会<a href="http://www.segmentfault.com">segmentfault</a>,然后还会去谷歌</li>
reactjs:
class Showlist extends Component{
render(){
return (<li>
{
this.props.val.replace(/segmentfault/,<List/>)//此处 val 是获取父组件的值,且存在
//另一种写法
this.props.val.replace(/segmentfault/,<a href="http://www.segmentfault.com">segmentfault</a></div>)
}
</li>)
}
}
class List extends Component{
render(){
return <div dangerouslySetInnerHTML={{__html: '<a href="http://www.segmentfault.com">segmentfault</a></div>'}}/>
}
}
结果页面输出
<li>这是一个 react 项目,没事我就会[object object],或者直接来 segmentfault</li>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
replace方法中,你是用一个对象替换了匹配结果,要加引号才是用字符串匹配,改写如下:
字符串的
replace
方法用的不对啊,第二个参数是字符串啊,骚年!http://www.w3school.com.cn/js...
如果不是字符串,jsx会把
a
标签使用React.createElement()创建成对象,然后再调用对象的toString方法,所以才会显示[object object]
哈