所以我有一个使用的骨干路由器反应的应用程序,但是当我尝试在DOMContentLoaded
导航,我得到:不变违规:目标容器不是一个DOM元素,当元素在DOM
Uncaught Error: Invariant Violation: _registerComponent(...): Target container is not a DOM element.
我尝试了一下堆栈跟踪,但无法弄清楚发生了什么,因为引发错误的方法(ReactMount._registerComponent
)被命中几次,其中第一个不会抛出错误,因为DOM有问题的元素在那里。我使用我在其他项目中使用的组件,没有问题,并剥夺所有作品降到最低调试这(失败至今):
DOM结构:
<html>
<head>
</head>
<body>
<div id="app-container">
</div>
<script src="http://fb.me/react-with-addons-0.12.0.js"></script>
<script type="text/javascript" src="js/application.js"></script>
</body>
</html>
与路由器代码:
AppRouter.prototype.signIn = function() {
var container = document.getElementById('app-container');
React.render(
<LoginForm />,
container
);
};
LoginForm的组分:
var LoginForm = React.createClass({
render: function() {
return(
React.render(
<div id="login-form-component">
</div>
)
);
},
});
路线被命中,按预期击中- 我错过了什么?
这里是堆栈跟踪,其底部是我的路由器登入方法:
invariant
ReactMount._registerComponent
(anonymous function)
ReactPerf.measure.wrapper
ReactMount.render
ReactPerf.measure.wrapper
React.createClass.render
(anonymous function)
ReactPerf.measure.wrapper
(anonymous function)
ReactPerf.measure.wrapper
ReactComponent.Mixin._mountComponentIntoNode
Mixin.perform
ReactComponent.Mixin.mountComponentIntoNode
(anonymous function)
ReactPerf.measure.wrapper
ReactMount.render
ReactPerf.measure.wrapper
AppRouter.signin
感谢您的阅读!
将'console.log(document.getElementById('app-container'))'放在.signIn中,只是为了检查。 99%的时间意味着你传递了undefined或null作为第二个参数。 – FakeRainBrigand 2014-11-08 18:24:30
我在检查后看到类似的问题,因此元素是:) – mattmattmatt 2014-11-08 18:31:44