PositiveGuy
PositiveGuy

Reputation: 20252

Get HTML in JSON to render as HTML in React Component

Trying to figure out how can i get the link to actually render as a link. Right now after i read this line of text from my Json file, react renders the hyperlink as literal text, it doesn't render it as a link.

someData.json

[{
    "about":   "John has a blog you can read <a href=\"http://www.john.com/blog/\" target=\"_blank\">here</a>."
}]

someComponent.js

const Person = Component({
    store: Store('/companies'),
    render(){
        var company = this.store.value()[this.props.companyId];

        return (
            <div id='ft-interviewee className="all-100"'>
                <p className="section-heading bold padding-top-20 font-22">Person</p>
                <div className="column-group horizontal-gutters">
                    <div className="all-10">
                        <div>{company.people.person.about}</div>
                    </div>

            </div>
        )
    }
});

Upvotes: 7

Views: 14723

Answers (3)

byanti
byanti

Reputation: 11

I think the best solution is to just get a ref on the container which will contain the HTML and then just set its innerHTML to the HTML-string which should be rendered.

Upvotes: 0

Oleksandr T.
Oleksandr T.

Reputation: 77512

You can use dangerouslySetInnerHTML

<div dangerouslySetInnerHTML={ { __html: company.people.person.about } }></div>

Example

Upvotes: 14

Anand Deep Singh
Anand Deep Singh

Reputation: 2620

Another option and I think cheap to use is NPM React Plugin

https://www.npmjs.com/package/react-html-parser

I have used this and feeling good.

Upvotes: 0

Related Questions