react-router4使用代码分割后ReactCssTransitionGroup的enter没有被添加上

react-router4使用代码分割后ReactCssTransitionGroup的enter没有被添加上但是leave过渡效果是有的,这是什么原因?

过渡组件SlideTransition

  .slide-enter {
    transform: translate3d(100%, 0, 0);
  }
  .slide-enter.slide-enter-active {
    transform: translate3d(0, 0, 0);
    will-change: transform;
    transition: all 600ms cubic-bezier(0.645, 0.045, 0.355, 1);
  }
  .slide-leave {
    transform: translate3d(0, 0, 0);
  }
  .slide-leave.slide-leave-active {
    transform: translate3d(100%, 0, 0);
    will-change: transform;
    transition: all 500ms cubic-bezier(0.645, 0.045, 0.355, 1);
  }
export default ({ children }) => (
    <ReactCssTransitionGroup
        transitionName="slide"
        transitionEnterTimeout={600}
        transitionLeaveTimeout={600}>
        {children}
    </ReactCssTransitionGroup>
)

bundle组件

export default function ayncComponent(importFun) {
    return class AsyncComponent extends React.Component {
        constructor(props) {
            super(props);
            this.state = { component: null };
        }
        async componentDidMount() {
            const {default: component} = await importFun();
            this.setState({ component });
        }
        render() {
            const C = this.state.component;
            return C ? <C {...this.props} /> : null;
        }
    }
}

页面组件

 <SlideTransition>
    <Switch location={this.props.loacation} key={this.props.location.key}>
        {
            this.props.routes.map((route, i) => <RouteWidthSubRoutes {...route} key={i}/>)
        }
    </Switch>
</SlideTransition>

代码结构差不多是这样子, 使用完代码分割后 .slide-enter 和 .slide-enter.slide-enter-active并没有被添加到组件上去 但是 leave 却可以被添加上去并有离场动画效果。。
不知道原因是什么。。

阅读 1.2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题