Ошибка при перемещении фреймера React. Невозможно прочитать свойство getBoundingClientRect для undefine при использовании ловушки useAnimation

Я создаю на своем веб-сайте функцию, в которой, когда вы прокручиваете определенный элемент div (т. Е. Больше не в поле зрения, с использованием react-intersection-observer), другой элемент анимируется (используя framer-motion useAnimation() крюк)

Я работаю в nextjs, и страница отображается на стороне сервера

      const topViewVariants = {
  hide: {
    y: "-100%",
  },
  show: {
    y: "0",
  },
};

const TopView = ({ inView }: { inView: boolean }) => {
  const controls = useAnimation();
  useEffect(() => {
    if (inView) {
      controls.start("hide");
    } else {
      controls.start("show");
    }
  }, [inView, controls]);
  return (
    <MotionMyBox
      variants={topViewVariants}
      animate={controls}
      initial="hide"
      position="fixed"
      top="0"
      w="100%"
      zIndex="30"
      display={{
        base: "block",
        md: "none",
      }}
    >
      <HStack p="4">
        <MyImage
          src="/images/home/header/4.jpg"
          alt=""
          boxSize={{
            base: "20",
            md: "20",
            lg: "20",
          }}
          quality=""
        />
        <VStack
          alignSelf="start"
          justifyItems="start"
          alignItems="start"
          spacing="1"
        >
          <Heading
            textTransform="uppercase"
            fontWeight="thin"
            fontSize="lg"
            display="inline-flex"
            justifyContent="center"
            w="100%"
          >
            xtreme torpe
            <Badge colorScheme="red" alignSelf="start" ml="2">
              E
            </Badge>
          </Heading>
          <Text fontSize="sm" fontWeight="semibold">
            {dayjs(new Date()).format("h:mm A, dddd MMMM D")}
          </Text>
          <Text fontStyle="italic" fontSize="xs" opacity="0.8">
            Hosted by Damien
          </Text>
        </VStack>
      </HStack>
    </MotionMyBox>
  );
};

const Event = ({}: Party) => {
    const [infoRef, infoInView] = useInView({
    threshold: 0,
  });
   return (
     <TopView inView={infoInView} />
     <div ref={infoRef}></div>
   )
}

Я также использую библиотеку пользовательского интерфейса под названием chakra-ui

Я действительно не понимаю этой ошибки, потому что логика довольно проста, если <div> на виду, затем запустите эту анимацию.

0 ответов

Другие вопросы по тегам