错误:
_registerComponent(...): Target container is not a DOM element.
导致main.jsx中的$('#container')
行。当我用document.getElementById('container')
取而代之时,一切都很好。我究竟做错了什么? jQuery不适用于React吗?
index.jade
doctype html
html
head
script(src="lib/babel/browser.min.js")
script(src="lib/react/react.min.js")
script(src="lib/react/react-dom.min.js")
script(src="lib/jquery/dist/jquery.min.js")
body
#container
script(src="public/js/main.jsx", type="text/babel")
main.jsx
$(function(){
var Doug = React.createClass({
render: function(){
return (<h1>Hello world</h1>);
}
});
ReactDOM.render(
<Doug></Doug>,
$('#container')
);
});
答案 0 :(得分:0)
$('#container')
是一个jQuery对象,而不是DOM元素,请尝试$('#container')[0]
答案 1 :(得分:0)
如果您运行console.log($('#container'));
然后检查答案,您将看到它没有像运行document.getElementById('container');
那样返回DOM对象。
记录它们,jquery实际上在jquery fn中返回一个jquery对象。命名空间(即n.fn.init[1]
),其数组具有对该DOM元素的引用。 React和jquery应该能够彼此并行运行。我还没有对它进行过测试,但你可能会尝试以下方式:
ReactDOM.render(<Doug></Doug>, $('#container').outerHTML());
但到那时,使用本机js方法来定位渲染站点更有意义。