0

错误:

_registerComponent(...): Target container is not a DOM element.

导致的$('#container')行在 main.jsx 中。当我用它代替document.getElementById('container')一切都很好。我究竟做错了什么?jQuery 不适合与 React 一起使用吗?

索引.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")

主.jsx

$(function(){
    var Doug = React.createClass({
        render: function(){
            return (<h1>Hello world</h1>);
        }
    });

    ReactDOM.render(
        <Doug></Doug>,
        $('#container')
    );  
});
4

2 回答 2

0

$('#container')是一个 jQuery 对象,而不是一个 DOM 元素,试试$('#container')[0]

于 2016-11-18T20:18:10.157 回答
0

如果你运行console.log($('#container'));然后检查答案,你会发现它不会像运行一样返回 DOM 对象document.getElementById('container');

将它们都记录下来,jquery 一个实际上在 jquery fn 中返回一个 jquery 对象。命名空间(即n.fn.init[1])具有一个引用该 DOM 元素的数组。React 和 jquery 应该能够同时运行。我还没有测试过,但你可以尝试以下方式:

ReactDOM.render(<Doug></Doug>, $('#container').outerHTML());

但到那时,使用本机 js 方法来定位渲染站点更有意义。

于 2016-11-18T21:36:58.210 回答