首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React + Framer Motion淡出功能组件

React + Framer Motion淡出功能组件
EN

Stack Overflow用户
提问于 2021-04-04 02:29:16
回答 1查看 281关注 0票数 1

所以我创建了这个预加载器,它显示var loading = true的时候,但我希望加载器淡出!这就是我的文件的样子。

首页上有所有的东西。

代码语言:javascript
复制
       return (
        <>
            {loading ? (
              <Loading />
            ) : (
              <>
                <Navbar />
                <Hero />
                <About />
                <Skills />
                <Contact />
              </>
            )}
        </>
      );

加载函数文件

代码语言:javascript
复制
const Loading = () => {
  const pathVariants = {
    hidden: {
      opacity: 0,
      pathLength: 0,
    },
    visible: {
      opacity: 1,
      pathLength: 1,
      transition: {
        duration: 2,
        ease: 'easeInOut',
      },
    },
  };
  const cVariants = {
    hidden: {
      opacity: 0,
    },
    visible: {
      opacity: 1,
      transition: {
        duration: 1,
        ease: 'easeInOut',
        delay: 2,
      },
    },
  };

  return (
    <>
      <AnimatePresence>
        <motion.div initial={{ opacity: 0 }} animate={{ opacity: 1 }} exit={{ opacity: 0 }}>
          <PreLoader>
            <Header>
              <motion.svg
                width='286'
                height='209'
                viewBox='0 0 286 209'
                fill='none'
                xmlns='http://www.w3.org/2000/svg'
              >
                <motion.g variants={cVariants} initial='hidden' animate='visible'>
                  <path
                    id='C'
                    d="svglol"
                    fill='#FF564A'
                  />
                </motion.g>

                <motion.g>
                  <motion.path
                    id='Polygon 1'
                    d="svglol"
                    stroke='#FF564A'
                    variants={pathVariants}
                    initial='hidden'
                    animate='visible'
                  />
                </motion.g>
              </motion.svg>
            </Header>
          </PreLoader>
        </motion.div>
      </AnimatePresence>
    </>
  );
};

导出默认加载;

那么,如何才能使加载函数淡出呢?我尝试了很多方法,比如用AnimatePresence包装加载器本身,但似乎不起作用。(我也在使用样式组件btw)

EN

回答 1

Stack Overflow用户

发布于 2021-04-04 08:31:21

代码语言:javascript
复制
    return (
        <AnimatePresense>
            {loading ? (
              <Loading key="loading" />
            ) : (
              <React.Fragment key="main">
                <Navbar />
                <Hero />
                <About />
                <Skills />
                <Contact />
              </ React.Fragment>
            )}
        </AnimatePresense>
      );

使其正常工作的提示

  1. AnimatePresense必须在您要有条件地呈现的内容之外
  2. 您必须在AnimatePresense的子级上具有显式的键,因为这是React知道组件是否已更改的方式。

我知道这很无聊,但我可能会重读几次AnimatePresense文档。我亲自读了2到3遍才弄明白所有的问题。

干杯

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66934586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档