【问题标题】:React js equivalent for ng-includeng-include 的 React js 等效项
【发布时间】:2014-08-29 08:41:49
【问题描述】:

我正在使用 Reactjs。我想在我的视图中包含部分 html。像 ng-include 之类的东西。 最好的方法是什么?

<div>
    <ng-include src="myPageUrl"></ng-include>
</div>

我尝试了以下没有运气 - 得到了

'Uncaught Error: Invariant Violation: traverseAllChildren(...): 
Encountered an invalid child; 
DOM elements are not valid children of React components'

我的代码看起来像这样(基于http://benalpert.com/react/tips/initial-ajax.html

var PageContainer = React.createClass({
  getInitialState: function() {
   return {
    page: "loading page ..." 
   };
  },
  componentDidMount : function(){
   $.get(url, function(result) {
   var data = result;
   this.setState({
    page: data
   });
  }.bind(this));
 },
 render: function () {
  return (
    <div id="page" className="PageContainer">
        {this.state.page}
    </div>
 );
}

});

【问题讨论】:

    标签: reactjs


    【解决方案1】:

    React documentation

    作为最后的手段,您始终可以插入原始 HTML。

    &lt;div dangerouslySetInnerHTML={{__html: 'First &amp;middot; Second'}} /&gt;

    所以对你来说可能是:

    render: function () {
      return (
        <div id="page" className="PageContainer"
          dangerouslySetInnerHTML={{__html: this.state.page}}
         >
        </div>
     );
    

    【讨论】:

    • 插入的 HTML 会是虚拟 DOM 的一部分吗?它可以有 ReactJS 组件吗?
    • 插入的 HTML 不是由 React 管理的,它被认为是普通的普通 HTML,因此它不能包含 React 组件。如果你想做更复杂的事情,你必须解析 HTML 并转换为 React 元素。有一些图书馆可以帮助解决这个问题,例如:npmjs.com/package/html-to-react
    猜你喜欢
    • 1970-01-01
    • 2014-02-14
    • 2015-09-16
    • 1970-01-01
    • 2019-09-13
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多