【问题标题】:react.js - ReactCSSTransitionGroup throws exceptionreact.js - ReactCSSTransitionGroup 抛出异常
【发布时间】:2015-03-11 05:04:58
【问题描述】:

我正在尝试在 React.js 应用 (http://facebook.github.io/react/docs/animation.html) 中添加动画以进入我的列表。

但是ReactCSSTransitionGroup会抛出这样的异常:

Uncaught TypeError: Cannot read property '_mockedReactClassConstructor' of undefined

连同警告:

Warning: React.createElement: type should not be null or undefined. It should be a string (for DOM elements) or a ReactClass (for composite components). warning.js:36

Warning: Only functions or strings can be mounted as React components.

我的组件看起来像:

var List = React.createClass({
  render: function () {
    var items = this.props.data
        .filter(function (item) {
            return item.stream;
        })
        .map(function (item) {
            return <div key={item.id}>item.name</div>;
        });

      return (
        <div className="list clearfix">
            <ReactCSSTransitionGroup transitionName="example">
                {items}
            </ReactCSSTransitionGroup>
        </div>
     );
  }
});

【问题讨论】:

  • 能否提供更多数据?你能在 jsfiddle 上创建一个测试用例吗?
  • 这个 - jsfiddle.net/r98d348f/3 工作正常,直到你将 {items} 包装成 ReactCSSTransitionGroup..
  • 检查我更新的答案。

标签: javascript animation css-transitions reactjs reactcsstransitiongroup


【解决方案1】:

由于最初的答案是基于上述代码正确的假设,这里是根据您的小提琴修改后的答案。

在您的小提琴中,您没有正确引用 ReactCSSTransitionGroup。您将其引用为React.ReactCSSTransitionGroup,当然是undefined。这就是为什么你的小提琴会抱怨,如果你试图在其中包装任何东西,因为你使用的是未定义的值。为了让你的小提琴正常工作,你必须像这样引用 css 过渡组:

var ReactCSSTransitionGroup = React.addons.CSSTransitionGroup;

更正后的小提琴:http://jsfiddle.net/r98d348f/4/

【讨论】:

  • 好的,小提琴有效,但添加的 CSS 过渡不适用 - 更新了小提琴 jsfiddle.net/r98d348f/5
  • 我也设法用React.addons.CSSTransitionGroup; 修复了我的真实代码中的异常,但动画仍然不存在。
  • 是的,正如您在此示例中看到的那样:jsfiddle.net/r98d348f/7 您想要的是“出现”上的动画,而不是“进入”。这只是最近才实施的,尚未在正式版本中提供。 (github.com/facebook/react/commit/…),最新版本:fb.me/react-with-addons-0.12.2.js - 请注意缺少“出现”过渡。您可以通过在没有数据的情况下渲染一次然后立即使用您的初始数据再次渲染来解决此问题。
  • 关于重新渲染,componentDidMount 中的forceUpdate 不起作用 - jsfiddle.net/r98d348f/8
  • 我觉得这是一个文档问题。我过去也遇到过同样的问题,因为文档都引用了ReactCSSTransitionGroup 而不是CSSTransitionGroupReactTransitionGroupTransitionGroup 也是如此。
猜你喜欢
  • 2013-05-24
  • 1970-01-01
  • 2011-05-30
  • 1970-01-01
  • 2011-02-25
  • 2012-01-24
  • 1970-01-01
相关资源
最近更新 更多