首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReactTransitionGroup底层接口

ReactTransitionGroup底层接口
EN

Stack Overflow用户
提问于 2015-12-31 05:41:22
回答 2查看 1.2K关注 0票数 1

我对React和动画真的很陌生,我正在尝试用ReactTransitionGroup动画我的组件,我不太确定该怎么做。未调用任何ReactTransitionGroup生命周期方法(componentWillAppear或ComponentDidAppear)。

代码语言:javascript
复制
var React = require('react');
var ReactTransitionGroup = require('react-addons-transition-group');

var App = React.createClass({
render: function(){
    return (

        <div> 
            <h3>Type in the box below to watch it change color.</h3>
            <div>
            <ReactTransitionGroup component={List}>
            {this.props.children}
            </ReactTransitionGroup>
             </div>
        </div>
        );
}

});

var List = React.createClass({
componentWillAppear: function(callback){
    console.log('componentWillAppear');
    setTimeout(callback, 1);
},
componentDidAppear: function(){
    console.log('componentDidAppear');
},

componentWillLeave: function(callback){
    console.log('componentWillLeave');
},
componentDidLeave: function(){
    console.log('componentWillLeave');
},
render: function(){
    return <div>{this.props.children}</div>
}

});

module.exports = App;

为什么不调用这些ReactTransitionGroup钩子??请帮帮忙。

EN

回答 2

Stack Overflow用户

发布于 2015-12-31 09:21:57

您的问题是将生命周期方法附加到您的自定义组件,该组件是动画子组件的。从文档中:

当以声明方式添加或删除时(如上面的示例所示),将在它们上调用特殊的生命周期挂钩。

因此,期望生命周期方法的是{this.props.children},而不是List

票数 2
EN

Stack Overflow用户

发布于 2016-05-12 03:47:49

孩子需要一把钥匙

更改:

代码语言:javascript
复制
{this.props.children}

至:

代码语言:javascript
复制
{React.cloneElement(this.props.children, {
    key: Math.random()
})}

在列表中渲染硬编码内容的测试,尝试:

渲染: function(){ return Hello world }

此外,ReactTransitionGroup还具有一些特性,您可能正在寻找一个类似于此处所记录的“外观”转换:https://facebook.github.io/react/docs/animation.html#getting-started

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34537677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档