当前位置: 首页 > 面试题库 >

将reactjs与requirejs一起使用

邵赞
2023-03-14
问题内容

最近,我开始reactjsbackbonejs路由器一起使用来构建应用程序

我通常将use requirejs用于依赖项和代码管理。但是,当我尝试包含包含jsx语法的文件时会出现问题。

这就是我目前所拥有的router.js

define(["backbone", "react"], function(Backbone, React) {

  var IndexComponent = React.createClass({
    render : function() {
      return (
        <div>
        Some Stuff goes here
        </div>
        );
    }
  });



  return Backbone.Router.extend({
    routes : {
      "": "index"
    },
    index : function() {
      React.renderComponent(<IndexComponent />, document.getElementById('index'));
    }
  });
});

如何将IndexComponent放在其自己的文件中并在此文件中调用它?我尝试了通常的方法(与骨干和反应相同),但是由于jsx语法错误。


问题答案:

所以我自己弄清楚了。

我从此仓库获得了必要的文件和说明:jsx-
requirejs-plugin

一旦有了jsx插件和JSXTransformer的修改版本,就按照存储库中的说明更改了代码:

require.config({
  // ...

  paths: {
    "react": "path/to/react",
    "JSXTransformer": "path/to/JSXTransformer",
    "jsx": "path/to/jsx plugin"
    ...
  }

  // ...
});

然后,我可以通过jsx!插件语法引用JSX文件。例如,要加载组件目录中的Timer.jsx文件,请执行以下操作:

require(['react', 'jsx!components/Timer'], function (React, Timer) {
   ...
   React.renderComponent(<Timer />, document.getElementById('timer'));
   ...
});

我还可以使用相同的代码访问.js其中包含jsx语法的文件:

require(['react', 'jsx!components/Timer'], function (React, Timer) {
   ...
   React.renderComponent(<Timer />, document.getElementById('timer'));
   ...
});

另外,我不需要/** @jsx React.DOM */使用jsx语法将文件放在顶部。

希望能帮助到你。



 类似资料:
  • 我有下一个代码: null null 如何注意到组件内部,我得到了一个道具。我的问题是下一个:为什么当我更改选项卡时,单击每个选项卡,我会在useEffect中获得正确的数据,但如果我在同一个选项卡上单击两次,我在console中没有获得值?即使我添加了依赖项,也会发生这种情况。如何在控制台中每次获得值,甚至在同一个选项卡上点击两次? 演示:https://codesandbox.io/s/bas

  • 问题内容: 因此,我一直在为这个(应该是)简单的练习而绞尽脑汁,以使该程序将日期字符串转换为对象,对其进行格式化,并在完成后将其作为字符串再次返回。 这是程序的最后一点,它从文件中获取一小段文本,将其分解为单独的记录,然后将记录分解为单独的数据并将它们分配给个人对象。 我已经在多个位置检查了该代码,并且该代码完全执行了应该执行的操作,直到调用了format函数(该函数抛出)为止。为对象分配了应该分

  • 问题内容: 我想在目录中获取具有特定扩展名的文件列表。在中,我看到了可以做到这一点的方法。 由于我需要特定的扩展名,因此我创建了一个。但是,当我与此一起使用时,出现编译错误。我以为自以来,我应该能够做到这一点。代码如下: 最后一行显示编译错误: 类型的方法不适用于类型的参数 我正在尝试使用,不是。为何编译器无法识别这一点? 如果我编写自己的扩展筛选器,则此方法有效。我宁愿使用而不愿自己写。我究竟做

  • 问题内容: 我正在尝试在我的watchKit应用中使用firebase数据库。我已经在我的iPhone应用程序上开发了此功能,但是发现在我的Watch应用程序上很难做到这一点。当我尝试将firebase导入watch应用程序的VC类中时,它正在创建error 。 可以在Watch app中使用Firebase吗? 问题答案: 可悲的是,没有支持,并由于这样的事实,有没有支持在这些版本中,并高度依赖

  • 问题内容: 当请求来自Ajax.ActionLink(使用Http方法发布)时,是否可以在控制器操作上使用ValidateAntiForgeryToken属性。替代方法似乎是手动滚动JQuery Ajax请求,但我很好奇MVC Ajax框架中是否有办法。 问题答案: 我还没看过。您必须将令牌放入POST中记录的数据中。每次都使用相同的防伪令牌ID(或名称,我不记得了),但是您必须非常小心,并确保您

  • 所以我一定是错过了什么,我希望执行一个语句块,如果可选的存在,否则抛出异常。 如果不是null,则打印hellow world。如果是,则抛出运行时异常。