react用正则匹配字符串,并给其添加一个标签,标签无法被浏览器渲染(可点击看例子)

发布于 2022-09-06 01:10:42 字数 958 浏览 12 评论 0

有一段字符串例如:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

离去的眼神 2022-09-13 01:10:42

replace方法中,你是用一个对象替换了匹配结果,要加引号才是用字符串匹配,改写如下:

render() {
    var dangerHtml = this.props.val.replace(/segmentfault/,"<a href='http://www.segmentfault.com'>segmentfault</a></div>");
    return (
        <li>
          <div dangerouslySetInnerHTML = {{__html: dangerHtml}} />
        </li>
    )
长不大的小祸害 2022-09-13 01:10:42

字符串的replace方法用的不对啊,第二个参数是字符串啊,骚年!

this.props.val.replace(/segmentfault/,'<a href="http://www.segmentfault.com">segmentfault</a>')

http://www.w3school.com.cn/js...

如果不是字符串,jsx会把a标签使用React.createElement()创建成对象,然后再调用对象的toString方法,所以才会显示[object object]

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文