jQuery和React.js打得不好

时间:2016-11-18 20:15:51

标签: jquery reactjs pug react-dom

错误:

_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')
    );  
});

2 个答案:

答案 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方法来定位渲染站点更有意义。