动态HTML字符串反应组件

Bha*_*n K 12 javascript reactjs

我将从我的模板渲染中获取动态html内容,该内容由其他反应组件呈现.我如何将这个html字符串转换为React组件,以便我可以在我的渲染函数中使用该组件.请注意,我想保留用于差异的特定反应属性.

React.createClass( {
  var self = this;

  componentWillMountDown : function() {
    //htmlString is essentially huge dynamic one in my actual case
    var htmlString = "<div class='classDiv' react-id="0.1"><input type='text'/></div>";
    self.setState({responseString : htmlString});
    self.forceUpdate();
  },
    
  render: function() {
    var Response = this.state.responseString;
    //how would I return the react component as response?
    return (<Response/>); //does not work. err is it shd be valid react component
   }
});
Run Code Online (Sandbox Code Playgroud)

我已经尝试将htmlString转换为HTMLDocument对象,并在willmount回调中递归创建React.createElement并设置react组件.但是,错误是类型toUpperCase未定义.

Mik*_*les 11

几个小时前,我html-to-react在npm(https://www.npmjs.com/package/html-to-react)发布了一个可以帮助你的模块.

如果您有任何需要,请告诉我,我当然可以与您合作,使模块更加灵活.


Phi*_*yen 7

因为您将组件存储为字符串,所以必须使用dangerouslySetInnerHTML.这是我的建议.我希望别人能有更好的答案.:)

    render: function() {
    var self = this;
    var Response = React.createClass({
        render: function(){
        return (<div dangerouslySetInnerHTML={{__html: self.state.responseString}}></div>)
        }
    });
    return (
            <Response />
    )
   }
Run Code Online (Sandbox Code Playgroud)

  • 刚编辑了这个问题.由于我想保留特定于特定属性的属性,因此无法使用危险的SetInnerHtml.是否有一种从HTML字符串创建反应组件的编程方法 (3认同)