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

ReactTransitionGroup挂钩中的回调是什么?

洪飞白
2023-03-14
问题内容

React.js为动画提供了一个低级API,称为ReactTransitionGroup。在文档中指出,对钩componentWillAppearcomponentWillEntercomponentWillLeave,一个回调函数作为参数传递。

我的问题是,此回调究竟是什么以及如何传递给这些钩子,文档没有对这些回调进行任何说明,只是将动画延迟到调用之前。


问题答案:

首先,我也仍在学习ReactJS,所以我的方法可能有错误,而没有错误。为此提前致歉。

打开“开发人员工具”的console窗口,分析我刚刚制作的
这个jsFiddle 示例。观察调用回调的顺序。

TweenMax习惯对框进行一些动画处理,以使其在单击按钮时显示或消失。

低级API 公开为我们利用了不少有用的回调。共享的示例演示了这些回调的用法。

JavaScript:

var ReactTransitionGroup = React.addons.TransitionGroup;
var MyBox = React.createClass({
    show: function(callback){
        var node = React.findDOMNode(this);
        TweenMax.fromTo(node, 2, { width: 100, height: 100, backgroundColor: '#0cc', scale: 0.2, opacity: 0, rotation: -180 }, { width: 100, height: 100, backgroundColor: '#0cc', scale: 1, opacity: 1, rotation: 0, ease: Expo.easeInOut, onComplete: callback, onCompleteScope: this });
    },
    hide: function(callback){
        var node = React.findDOMNode(this);
        TweenMax.to(node, 2, { width: 100, height: 100, backgroundColor: '#cc0', scale: 0.2, opacity: 0, ease: Expo.easeInOut, onComplete: callback, onCompleteScope: this });
    },
    componentWillAppear: function(didAppearCallback){
        console.log('MyBox.componentWillAppear');
        this.show(didAppearCallback);
    },
    componentDidAppear: function(){
        console.log('MyBox.componentDidAppear');
    },
    componentWillEnter: function(didEnterCallback){
        console.log('MyBox.componentWillEnter');
        this.show(didEnterCallback);
    },
    componentDidEnter: function(){
        console.log('MyBox.componentDidEnter');
    },
    componentWillLeave: function(didLeaveCallback){
        console.log('MyBox.componentWillLeave');
        this.hide(didLeaveCallback);
    },
    componentDidLeave: function(){
        console.log('MyBox.componentDidLeave');
    },
    componentDidMount: function() {
        console.log('MyBox.componentDidMount');
    },
    componentWillUnmount: function() {
        console.log('MyBox.componentWillUnmount');
    },
    render: function(){
        return <div>&nbsp;</div>;
    }
});
var Container = React.createClass({
    getInitialState: function(){
        return { isShowing: false };
    },
    onButtonClicked: function(){
        this.setState({ isShowing: !this.state.isShowing });
    },
    render: function(){
        var myBox = this.state.isShowing ? <MyBox key="myBox" /> : '';
        return (
            <div id="container">
                <MyButton onButtonClicked={this.onButtonClicked} />
                <ReactTransitionGroup transitionName="hellotransition">
                    {myBox}
                </ReactTransitionGroup>
            </div>
        );
    }
});
var MyButton = React.createClass({
    render: function(){
        return <button onClick={this.props.onButtonClicked}>Click Me</button>;
    }
});
//
React.render(<Container />, document.body);

让我知道是否有任何不清楚的地方,我很乐意分享我所知道的。



 类似资料:
  • 问题内容: 我想通过提供一个调用用户函数的接口来为我的一个模块的用户提供扩展其功能的能力。例如,我想让用户能够在创建类的实例时得到通知,并有机会在使用该实例之前对其进行修改。 我实现它的方法是声明一个执行实例化的模块级工厂函数: 然后,当我在mymodule中需要一个类的实例时,我会做而不是。 为了扩展它,程序员将在另一个模块中编写如下函数: 上面的回调的安装如下所示: 这对我来说似乎很简单,但是

  • 问题内容: 是否有人在React 16.8中为useState挂钩的更新部分创建了同步回调?我一直在寻找一种方法,这样我就可以使用第三方库来处理同步操作,而我似乎无法根据自己的需要来完成一项工作。 如果有人对成功完成此操作的人员有任何引用,请在此处添加。 干杯, 问题答案: 使用钩子,您不再需要该函数的回调。现在,您可以使用挂钩设置状态,并监听其值以使用挂钩更新。挂钩的可选第二个参数采用一组值来侦

  • 从 react 导入 useState,将其粘贴到正文函数,但 react 告诉我错误的使用钩子。虽然另一个钩子像这样工作。

  • 我在读《新概念》。我遇到了一条规则,上面说。在这里,他们提供了解释链接。 我明白他们想说什么,但我不能得到确切的原因,比如为什么我不能在if-else块中使用useffect? 还有一种说法 useState每次都是不同的调用,每次都可以返回新的“[state,setState]”,所以这里有什么困难知道谁调用了哪个useState?

  • 问题内容: 我已经阅读了回调的Wikipedia定义,但仍然不明白。谁能解释一下回调是什么,尤其是以下几行 在计算机编程中,回调是对可执行代码或一段可执行代码的引用,该代码作为参数传递给其他代码。这允许较低层的软件层调用较高层中定义的子例程(或函数)。 问题答案: 也许一个例子会有所帮助。 您的应用程序想要从一台远程计算机下载文件,然后写入本地磁盘。远程计算机是拨号调制解调器和卫星链路的另一侧。延

  • 问题内容: 我想了解回调的概念。我在互联网上搜索了有关回调的信息,有很多使用接口的示例,一个类正在使用该接口调用另一类的方法。但是我仍然不能理解回调的主要概念,使用回调的目的是什么? 问题答案: 回调的概念是在另一个类中完成某些工作时通知类同步/异步。有人称其为好莱坞原则:“不要叫我们,我们叫你”。 这是一个例子: A类调用B类以在线程中完成一些工作。如果线程完成了工作,它将通过回调通知Class