JSX 表达式中显示 HTML 实体

JSX 表达式中显示 HTML 实体

  • JSX是HTML和JS混合写的语法
  • 遇到<,就当html解析
  • 遇到{就当JS解析
  • 在JSX中可以通过用大括号{}来加入JavaScript表达式

问题

  • 当在JS表达式中显示HTML实体的时候,可能会遇到二次转译的问题
  • 业务场景
  • 新闻业务,内容为网络上抓的各种文章,是HTML实体
  • 代码例子
    render () {

        const newContent = '<div>我是新闻内容</div>';

        return (

            <div>

                { newContent }

            </div>

        )

    }
  • 显示结果
image.png

原因

  • 因为react会默认转译所有字符串,防止XSS攻击。

解决方式

  • 使用dangerouslySetInnerHTML
    render () {

        const newContent = '<div>我是新闻内容</div>';

        return (

            <div>

                <div dangerouslySetInnerHTML={{__html: newContent}}></div>

            </div>

        )

    }
  • 显示结果


    image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 无意中看到zhangwnag大佬分享的webpack教程感觉受益匪浅,特此分享以备自己日后查看,也希望更多的人看到...
    小小字符阅读 8,281评论 7 35
  • GitChat技术杂谈 前言 本文较长,为了节省你的阅读时间,在文前列写作思路如下: 什么是 webpack,它要...
    萧玄辞阅读 12,745评论 7 110
  • 初见老师徐军辉一袭深色中式夹袄,个子不高,戴付眼镜,我的第一感觉就是这个老师个性很强,不容易相处,当时有人问...
    清欢的乐乐阅读 1,212评论 0 1
  • 弄了好半天终于下载好了简书,我发觉自己是不是真的很笨了,不过我真的不喜欢玩手机,也很少玩,想想以后可以在这里随便写...
    读歌阅读 139评论 0 0
  • Python下用的最多的包安装工具就是easy_install和pip,但是他们都是从Python官方的Pypi源...
    yuiac阅读 841评论 0 0