如何在React JS中将HTML字符串呈现为组件

时间:2019-05-21 10:30:11

标签: javascript html reactjs react-redux render

我正在将内容HTML用作字符串,例如<div>Hello</div>,而我只想在react组件中呈现为HTML,而无需使用innerHTML方法,并且默认的响应就像危险地设置为InnerHTML。让我知道是否有任何有效的完美替代方案。我只是不想使用html-to-react之类的软件包。是否可以在React Render中使用其他默认方法来实现?

export default class sampleHTML extends React.Component {

    constructor(props) {
        super(props);
        this.state = {
            currentState: "",

        };
    }
    componentDidMount() {
        this.setState({currentState :`<div>Hello</div>` }); 
    }
    render() {
        return (
            <div id="container">{this.state.currentState}</div>
        )
    };
};

Sample Link

我需要将标签呈现为非字符串形式

2 个答案:

答案 0 :(得分:0)

您可以在反应中使用危险的SetInnerHTML。 有关更多详细信息,您可以使用以下链接: https://reactjs.org/docs/dom-elements.html

export default class sampleHTML extends React.Component {

    constructor(props) {
        super(props);
        this.state = {
            currentState: "",

        };
    }
    componentDidMount() {
        this.setState({currentState: <div>Hello</div> }); 
    }

    this.createMarkup() {
      return {__html: this.state.currentState};
    }

    render() {
        return (
            <div id="container" dangerouslySetInnerHTML={createMarkup()}></div>
        )
    };
};

答案 1 :(得分:-1)

只需将其另存为元素而不是字符串:

export default class sampleHTML extends React.Component {

    constructor(props) {
        super(props);
        this.state = {
            currentState: "",

        };
    }
    componentDidMount() {
        this.setState({currentState: <div>Hello</div> }); 
    }
    render() {
        return (
            <div id="container">{this.state.currentState}</div>
        )
    };
};