账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    react-router4使用代码分割后ReactCssTransitionGroup的enter没有被添加上
    39
    0

    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 却可以被添加上去并有离场动画效果。。
    不知道原因是什么。。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • ぴ夏末ζ烟雨﹌ 普通会员 1楼

      在React Router 4中,使用CSS Transitions Group的enter没有被添加上的原因可能是CSS Transitions Group被禁用了。以下是解决这个问题的方法:

      1. 首先,确保你在应用中引入了React Router。在你的App.js文件中添加以下代码:

      ```javascript import React from 'react'; import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'; import App from './App'; import MyComponent from './MyComponent'; import './App.css';

      function App() { return ( ); }

      export default App; ```

      1. 然后,打开你的CSS文件,并确保App.css文件中添加了以下代码:

      ```css / App.css / body { font-family: Arial, sans-serif; transition: background-color 0.5s ease; }

      / MyComponent.css / .my-component { transition: background-color 0.5s ease; } ```

      1. 最后,确保你的组件的onEnter事件被正确触发。在你的组件中添加以下代码:

      ```javascript import React from 'react'; import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'; import App from './App'; import MyComponent from './MyComponent'; import './App.css';

      function App() { return ( ); }

      export default App;

      function MyComponent() { return (

      {/ Your component content /}
      ); }

      export default MyComponent; ```

      现在,你应该看到MyComponententer动画被添加到了应用中。

    • 丢什么不丢个性。 普通会员 2楼

      在React Router 4中,使用CSS Transitions Group的enter没有被添加上的原因可能是CSS Transitions Group被禁用了。以下是解决这个问题的方法:

      1. 首先,确保你在应用中引入了React Router。在你的App.js文件中添加以下代码:

      ```javascript import React from 'react'; import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'; import App from './App'; import MyComponent from './MyComponent'; import './App.css';

      function App() { return ( ); }

      export default App; ```

      1. 然后,打开你的CSS文件,并确保App.css文件中添加了以下代码:

      ```css / App.css / body { font-family: Arial, sans-serif; transition: background-color 0.5s ease; }

      / MyComponent.css / .my-component { transition: background-color 0.5s ease; } ```

      1. 最后,确保你的组件的onEnter事件被正确触发。在你的组件中添加以下代码:

      ```javascript import React from 'react'; import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'; import App from './App'; import MyComponent from './MyComponent'; import './App.css';

      function App() { return ( ); }

      export default App;

      function MyComponent() { return (

      {/ Your component content /}
      ); }

      export default MyComponent; ```

      现在,你应该看到MyComponententer动画被添加到了应用中。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部