未捕获的不变违规:_registerComponent(...):目标容器不是 DOM 元素

Posted

技术标签:

【中文标题】未捕获的不变违规:_registerComponent(...):目标容器不是 DOM 元素【英文标题】:Uncaught Invariant Violation: _registerComponent(...): Target container is not a DOM element 【发布时间】:2016-08-01 12:14:45 【问题描述】:

我正在使用 Django 和 React。

我想显示这个 html 文件:

% load staticfiles %

<html>
  <head>
    <meta charset="utf-8">

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"
     integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS"
      crossorigin="anonymous">
    </script>

    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"
     rel="stylesheet" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7"
      crossorigin="anonymous">

    <link href="%static "css/rankingStyle.css"%" rel="stylesheet" type="text/css"/>

    <link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Raleway" />

    <title>Some title</title>
  </head>
  <body>
    <div id="app" />
    <script src="%static "public/bundle.js"%" type="text/javascript"></script>
  </body>
</html>

此文件引用js 文件:&lt;script src="%static "public/bundle.js"%" type="text/javascript"&gt;

js 文件已经从这个 React 文件中获得:

import React from 'react';
import render from 'react-dom';
import Criteria from './Criteria.jsx';
import  Button  from 'react-bootstrap';

var App = React.createClass(


  getInitialState: function() 
    return showRest: false;
  ,

  toggleShowRest: function() 
    this.setState(showRest: !this.state.showRest);
  ,

  render: function() 
    return (
        <div className="container">

          <div className="text-center">
            <h1> Title</h1>

            <button onClick=this.toggleShowRest type="button" className="btn btn-primary btn-circle btn-xl">Go</button>
          </div>

          this.state.showRest
          ?
          <Criteria />
          :
          null
        </div>
    );
  
);


React.render(<App url="/api/comments"/>, document.getElementById('app'));

在浏览器中,我收到此错误:

 bundle.js:593 Uncaught Invariant Violation: _registerComponent(...): Target container is not a DOM element.

593行之前的区域有这样的内容:

var DOMChildrenOperations = 

  dangerouslyReplaceNodeWithMarkup: Danger.dangerouslyReplaceNodeWithMarkup,

到目前为止,我看了这里:Invariant Violation: _registerComponent(...): Target container is not a DOM element 并尝试了所有答案。

但是他们没有工作。我认为这个问题是由 Django 特定的东西引起的。

【问题讨论】:

请使用ReactDOM.render() 方法调用发布该行。顺便说一句,div 不是自闭合元素,您应该使用&lt;div id="app"&gt;&lt;/div&gt;。这可能会导致问题。 没有ReactDOM.render() 方法调用。我正在使用React.render() 这是一回事,取决于 React 版本。你要分享吗?你试过关闭 div 吗? 是的,我尝试关闭它,但我遇到了同样的问题。我已经与React.render()分享了代码。 【参考方案1】:

你应该在dome node div id是app之后导入build js

例如:

【讨论】:

以上是关于未捕获的不变违规:_registerComponent(...):目标容器不是 DOM 元素的主要内容,如果未能解决你的问题,请参考以下文章

测试套件无法运行。不变违规:_registerComponent(...):目标容器不是 DOM 元素

未捕获的错误:_registerComponent(...):目标容器不是 DOM 元素。(...)

未捕获的不变违规:存储错误

未捕获的错误:不变违规:元素类型无效:对象

反应错误 - 未捕获的不变违规:元素类型无效

使用多个(最新)第 3 方反应库反应“未捕获的不变违规:元素类型无效”