【问题标题】:How to transform plain text to html JSX in ReactJS如何在 ReactJS 中将纯文本转换为 html JSX
【发布时间】: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} width="42" height="42" />
            </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,以便锚链接显示为链接而不是纯文本??

【问题讨论】:

    标签: html dom reactjs react-jsx


    【解决方案1】:

    你必须使用dangerouslySetInnerHTML:

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

    【讨论】:

    • 如果this.props.activity.text 未经过清理,此解决方案会造成 XSS 安全威胁。不幸的是,common approach to sanitizing html 字符会扭曲自动链接器的一些 URL。
    猜你喜欢
    • 2018-05-11
    • 2016-12-24
    • 2021-12-08
    • 2010-09-22
    • 2013-10-16
    相关资源
    最近更新 更多