如何在 ReactJS 中将纯文本转换为 html JSX

Posted

技术标签:

【中文标题】如何在 ReactJS 中将纯文本转换为 html JSX【英文标题】:How to transform plain text to html JSX in ReactJS 【发布时间】:2015-10-24 16:35:40 【问题描述】:

我有这样的组件:

import React from 'react';
import Autolinker from 'autolinker';

class Comment extends React.Component

    constructor(props)
        super(props);
    

    render()
        return <li className="media comment">
            <div className="image">
                <img src=this.props.activity.user.avatar.small_url   />
            </div>
            <div className="body">
                <p>
                    <strong>this.props.activity.user.full_name</strong>
                </p>
            </div>
            <div>
                <p>
                    Autolinker.link(this.props.activity.text)
                </p>
            </div>
        </li>;
    


export default Comment;

自动链接器返回一个字符串值,如下所示:

"So basically <a href="http://www.silastar.com/dev-sila" target="_blank">silastar.com/dev-sila</a> is perfect and works correctly?"

如何将此字符串转换为html JSX,以便锚链接显示为链接而不是纯文本??

【问题讨论】:

【参考方案1】:

你必须使用dangerouslySetInnerHTML:

<p dangerouslySetInnerHTML=__html: Autolinker.link(this.props.activity.text) />

【讨论】:

如果this.props.activity.text 未经过清理,此解决方案会造成 XSS 安全威胁。不幸的是,common approach to sanitizing html 字符会扭曲自动链接器的一些 URL。

以上是关于如何在 ReactJS 中将纯文本转换为 html JSX的主要内容,如果未能解决你的问题,请参考以下文章

如何在谷歌应用脚​​本中将段落 html 字符串转换为没有 html 标签的纯文本?

如何在 C# 中将 HTML 转换为文本?

在PHP中将HTML有序/无序列表转换为纯文本[重复]

如何在python中将纯文本转换为分段块(字节)? [复制]

如何使用 PHP 在 MySQL 数据库中将纯文本 CSV 字段保存为 HTML?

如何在 C# 中将 HtmlEncode/HtmlDecode 转换为纯文本?