javascript - Material-ui:ReactTransitionGroup 未定义

标签 javascript reactjs transition material-ui

我正在尝试将material-ui包含在使用gulp/browserify的React项目中。首先,我意识到我必须导航到 node_modules/material-ui 目录并在那里安装 npm,才能从 JSX 文件构建实际的源代码。

$ npm install material-ui --save
$ cd node_modules/material-ui
$ npm install

接下来,我将以下几行添加到我的项目中:

var React = require ('react/addons');
var e = document.getElementById ('react-mount-pt');
React.render (React.createElement (RootFrame.RootFrame, null), e);

RootFrame 是我写的一个组件,没什么花哨的。它包含一个尝试从 Material-ui 实​​例化组件的子组件,如下所示:

var Mui = require ('material-ui');

/* further below, in render(): */

return React.createElement (Mui.RaisedButton ({ label: 'Default' }));

当我尝试启动我的应用程序时,出现错误:“Uncaught TypeError: Cannot read property 'TransitionGroup' of undefined” in node_modules/material-ui/lib/dialog.js 包含以下内容的行:

var ReactTransitionGroup = React.addons.TransitionGroup;

当查看material-ui源代码( https://github.com/callemall/material-ui/blob/master/src/dialog.jsx )时,原因变得显而易见:有问题的行上方有一些行:

var React = require('react');

但据我所知,它应该需要 require('react/addons') 才能使用 TransitionGroup。

我应该如何使用这个库?

编辑: 来自React官方网站,https://facebook.github.io/react/docs/addons.html

When using the react package from npm, simply require('react/addons')  
instead of require('react') to get React with all of the add-ons.

material-ui 不会执行此操作,这可能就是我收到此错误的原因。

在我的 main.js 文件中,我添加了:

var React = require ('react/addons');
var ReactTransitionGroup = React.addons.TransitionGroup;

首先运行这段代码,我得到一个非空的ReactTransitionGroup。稍后,当需要material-ui时,material-ui需要('react')并获取没有ReactTransitionGroup的版本。我想说,这显然是material-ui 中的一个错误!

最佳答案

所以您正在尝试使用该按钮。您会注意到这一行 var ReactTransitionGroup = React.addons.TransitionGroup; 是按钮文件中可能引发错误的第一行 - 其他所有内容都只是分配。问题是material-ui在react中没有正确加载;它与您需要它无关。

对我来说,这是因为我忘记将material-ui 添加到我的browserify 包中。在 grunt 中,我的包看起来像这样。

browserify: {
  vendor: {
    src: [],
    dest: 'public/assets/vendor.js',
    options: {
      require: ['react', 'react-router', 'material-ui']
    }
  },
  client: {
    src: ['frontend/**/*.js'],
    dest: 'public/assets/frontend.js',
    options: {
      transform: ['reactify'],
      external: ['react', 'react-router', 'material-ui']
    }
  }
},

最初我的需求中没有“material-ui”。我添加它后解决了这个问题。

关于javascript - Material-ui:ReactTransitionGroup 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31511436/

相关文章:

vue.js - Vue 在路由器上进入过渡

javascript - 使用 postman 无法从express.js服务器获得响应

jQuery mobile 1.3.2 幻灯片转换在 Chrome 43 中损坏

javascript - 单击时更新 DIV 内容,无需直接知道其 ID

javascript - 网格单元格的边框在 native react 中并不统一

json - 无法访问 JSON 对象信息 React/Redux

javascript - 在 redux 中使用 axios 的正确方法

javascript - CSS 转换不适用于 UL 列表上的最大高度切换

javascript - 数据表:如何在表行中搜索字符串并隐藏行

javascript - 使用 Invoke 通过 Twitter 的 native BlackBerry 实现共享来 self 的 BlackBerry WebWorks Application 的内容需要哪些参数?