ReactCSSTransitionGroup

ReactCSSTransitionGroup

在Android 5.0上,ReactCSSTransitionGroup似乎间歇性地工作。在首次启动应用程序时,ReactCSSTransitionGroup将成功从dom中删除元素。然后,当该应用被终止并重新打开时,ReactCSSTransitionGroup不会从dom中删除元素

类名“ example-enter example-enter-active”保留在dom中,并且不会删除该元素。

以下是ReactCSSTransitionGroup的代码:

        return (
            <main id="main" className="main_flow_frame">
                <ReactCSSTransitionGroup transitionName="example" className={className} transitionEnter={animate}>
                    {this.state.components}
                </ReactCSSTransitionGroup>
            </main>
        );


下面是CSS:

.transitionA .example-enter {
  -webkit-transform: translate3d(100%, 0, 0);
  -ms-transform: translate3d(100%, 0, 0); /* IE 9 */
  transform: translate3d(100%, 0, 0);
  -webkit-transition: all 600ms cubic-bezier(0.19, 1, 0.22, 1);
  transition:         all 600ms cubic-bezier(0.19, 1, 0.22, 1);
  z-index:9999;
}

.transitionB .example-enter {
  -webkit-transform: translate3d(-100%, 0, 0);
  -ms-transform: translate3d(-100%, 0, 0); /* IE 9 */
  transform: translate3d(-100%, 0, 0);
  -webkit-transition: all 600ms cubic-bezier(0.19, 1, 0.22, 1);
  transition:         all 600ms cubic-bezier(0.19, 1, 0.22, 1);
}

.example-enter.example-enter-active {
  -webkit-transform: translate3d(0, 0, 0);
  -ms-transform: translate3d(0, 0, 0); /* IE 9 */
  transform: translate3d(0, 0, 0);
}

.example-leave {
  opacity: 1;
  -webkit-transition: opacity .15s ease-in;
  transition: opacity 0.15s ease-in;
 }

.example-leave.example-leave-active {
  opacity: 0.01;
  -webkit-transition: opacity .2s ease-in;
  transition: opacity 0.2s ease-in;
}


任何帮助将不胜感激。谢谢

最佳答案

ReactCSSTransitionGroup当前存在一些问题,其中transitionEnd不能正确触发(例如,当选项卡未聚焦时)。

我通过使用setTimeout的Khan's Academy实现修复了它。这是一个即插即用的替代品。

https://github.com/Khan/react-components/blob/master/js/timeout-transition-group.jsx

我不确定是否可以解决您在Android中的问题,但是值得尝试。

09-30 18:01