我正在使用React / Flux开发高度可插入的UI,并使用RequireJS加载模块。

我无法解决这个问题,可能是由于我对RequireJS的了解不足。还有另一层间接,但是问题的根源是:

我在具有以下渲染功能的模块中具有React组件A:

render: function() {

<div>
    <Component B />
</div>
}


和组件B,在一个单独的模块中将很简单:

render: function() {

    <div> Some Text </div>
}


在我与requirejs一起学习的顶层模块中,我可以像这样获得componentA:

require(['ComponentA'], function(ComponentA) {
    React.render(React.createElement(ComponentA,document.getElementById('main'));

});


效果很好,直到我尝试在ComponentA的呈现功能中使用ComponentB为止... componentA自然不知道ComponentB是什么,但是我不确定正确的方法或在componentA尝试呈现之前如何要求ComponentB。

注意:我预先将所有JSX转换为纯JS,因此这不是一个因素。

有小费吗?

最佳答案

听起来您的模块不是定义-http://requirejs.org/docs/api.html#defdep

使用定义,ComponentA绝对可以获取对ComponentB的引用,最简单的示例是这样的:

组件A-具有依赖项-http://requirejs.org/docs/api.html#defdep

define(['path/to/ComponentB'], function (ComponentB) {
    return React.createClass( {
        render: function () {
            <div>
                <ComponentB />
            </div>
        }
    });
});


ComponentB-无依赖性-http://requirejs.org/docs/api.html#deffunc

define(function () {
    return React.createClass( {
        render: function () {
            <div>
                Some Text
            </div>
        }
    });
});


然后,您可以按照问题中的说明在顶层渲染ComponentA,并且ComponentA将包含一个ComponentB。

09-25 18:23