如何将 react-spring 动画组件添加到 React 延迟加载?

Posted

技术标签:

【中文标题】如何将 react-spring 动画组件添加到 React 延迟加载?【英文标题】:How to add react-spring animation component to React lazy loading? 【发布时间】:2021-08-23 05:11:57 【问题描述】:

我尝试使用 React 延迟加载和 Suspense 加载。我有用于延迟加载的简单登录页面和动画页面。但是,如果我刷新或打开此页面,我将看不到动画。但是当像这样写fallback = <p> Loading... </p> 时,它是有效的。如何用动画做到这一点? 这是我延迟加载的主页:

import  lazy, Suspense  from "react";
import Login_Register from "../Loadingsss/login-register";

const Example = lazy(()=>import ('./Login'));

function Login()

    return (
        <Suspense fallback= Login_Register >
            <Example />
        </Suspense>
    );



export default Login;

还有这个动画页面:

import  useState  from 'react';
import animated, useSpring from 'react-spring';

function Login_Register()

    const [toogle, setToggle] = useState(true);

    const props = useSpring(
        width: toogle===true ?'22rem':'0rem',
        backgroundColor: toogle ? '#ccc' : 'rgb(175, 175, 175)',
        height: '100%',
        borderRadius: '10px'
    );

    setInterval( ()=>
        setToggle(!toogle);
    ,1000 );
    
    return (<div className="loading">
        <div className="row">
            <animated.div style = props.backgroundColor className="circle"></animated.div>
            <animated.div style=props className="rectangle"></animated.div>
        </div>
        <div className="row">
            <animated.div style = props.backgroundColor className="circle"></animated.div>
            <animated.div style=props className="rectangle"></animated.div>
        </div>
        <div className="row">
            <animated.div style = props.backgroundColor className="circle"></animated.div>
            <animated.div style=props className="rectangle"></animated.div>
        </div>
        <div className="row">
            <animated.div style = props.backgroundColor className="circle"></animated.div>
            <animated.div style=props className="rectangle"></animated.div>
        </div>
        <div className="row">
            <animated.div style = props.backgroundColor className="circle"></animated.div>
            <animated.div style=props className="rectangle"></animated.div>
        </div>
        
        
    </div>);


export default Login_Register;

我怎样才能像向上加载动画一样做到这一点?

【问题讨论】:

【参考方案1】:

您需要将 React 元素传递给 fallback,而不是组件。用&lt;/&gt; 包围Login_Register 以将该组件变成一个元素。像这样:

fallback= &lt;Login_Register /&gt;

【讨论】:

以上是关于如何将 react-spring 动画组件添加到 React 延迟加载?的主要内容,如果未能解决你的问题,请参考以下文章

React-Spring - 改变过渡动画速度

react-spring 中的“动画”做啥?

React JS:如何在 react-spring 中使用响应式样式

Firefox 上的 react-spring 和 framer-motion 滞后

使用 React-spring useTransition 的动画在递归循环中无法按预期工作

如何使用 react-spring 滚动到元素?