javascript - ReactJS 和 RequireJS -> 如何使用从一个模块返回的多个类?

标签 javascript scope requirejs reactjs

我有一个 RequireJS 模块,它返回多个 ReactJS 类,我希望这些类立即可用于 JSX 范围。

例如

define(["require"], function (require) {

  var SimpleClass = React.createClass({displayName: 'SimpleClass',
    render: function() {
      return <div>HELLO DUDE {this.props.name}</div>;
    }
  });
  var AnotherSimpleClass = React.createClass({displayName: 'AnotherSimpleClass',
    render: function() {
      return <div>SUPER DUDE {this.props.name}</div>;
    }
  });


  var result = 
  {
    AnotherSimpleClass: AnotherSimpleClass,
    SimpleClass: SimpleClass
  };

  return result;
});

我希望能够在 React/JSX 中使用它们,如下所示(伪代码):

define(["require","jsx!app/my_classes"], function (require, MyClasses) {

  React.renderComponent(
    <div>
      <MyClasses.SimpleClass name="Test" />
      <MyClasses.AnotherSimpleClass name="John" />
    </div>
  , this.el);

});

当我这样做时,React 无法找到我的模块类。仅当我将类公开到范围时它才有效,即:

define(["require","jsx!app/my_classes"], function (require, MyClasses) {

  var SimpleClass = MyClasses.SimpleClass;
  var AnotherSimpleClass = MyClasses.AnotherSimpleClass;

  React.renderComponent(
    <div>
      <SimpleClass name="Test" />
      <AnotherSimpleClass name="John" />
    </div>
  , this.el);

});

我该怎么做?我知道我可以将它们一一提取到当前范围,或者将它们提取到全局范围,但似乎我应该能够从 JSX 中使用它们而无需修改。谢谢!

请注意,我知道我可以使用如下函数将它们公开到全局范围:

  function exposeClasses(obj){
    for (var prop in obj)
    {
      window[prop] = obj[prop];
    }
  }

  exposeClasses(MyClasses);

但如果可能的话,我更愿意将它们保留在 namespace 中。请注意,这是 similar to this question being asked here on StackOverflow

最佳答案

ReactJS 现在支持此功能,如 this pull request添加此功能已被合并。

关于javascript - ReactJS 和 RequireJS -> 如何使用从一个模块返回的多个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23739166/

相关文章:

jquery - jQuery 中使用 every 和 函数的 $(this) 的意外范围

kendo-ui - 使用 requirejs 注入(inject) kendo ui

javascript - 处理多个并发请求 Express

javascript - 在未来事件中使用闭包的问题

javascript - 防止在 Javascript 中自动创建全局变量

javascript - 如何使用 RequireJS 销毁加载的 Javascript 文件

angularjs - 使用 angularjs 和 requirejs 时的指令渲染延迟

javascript - Angular2,从组件内的字符串评估模板

javascript - 通过循环两个数组来构建对象

c - 指向作为值传递的参数的指针?