@steklovatnik

Анимация срабатывает неправильно (framer-motion)?

Доброго времени суток.
Использую библиотеку framer-motion и словил неприятный мелочный баг.
При клике на стрелочку она должна разворачиваться, и наоборот, будет выпадающий список в будущем. Один раз она разворачивается плавно, а второй - мгновенно, если брать значение isOpen просто из самодельного state, то все работает.
А сейчас получаю данные из хранилища редакса в родителя и передаю в качестве пропсов, в самом компоненте при клике отправляю измененное состояние.
Как починить?

import { useDispatch, useSelector } from "react-redux";
import React, { useState } from "react";
import { motion } from "framer-motion";

import s from "./listItem.module.css";
import DragIcon from "./DragIcon";

export default function ListItem({ item }) {
  const dispatch = useDispatch();

  const { title, content, index, isChecked, isOpen } = item;


  const arrowVariants = {
    open: { rotate: 0 },
    closed: { rotate: 180 },
  };



  function handler() {
    return dispatch({ type: "IS_OPEN", payload: index });
  }

  return (
    <div className={s.item}>
      <div >
        <div className={`${s.title}    `}>
    
          <motion.div
            onClick={handler}
            variants={arrowVariants}
            animate={isOpen ? "open" : "closed"}
            style={{
              position: "absolute",
              top: 0,
              right: 0,
              border: "12px solid transparent",
              borderTop: "12px solid rgba(190, 189, 189, 0.493)",
              width: "12px",
              cursor: "pointer",
            }}
            transition={{ duration: 0.2 }}
          ></motion.div>
        </div>
        <div className={s.text}>{content}</div>
      </div>
    </div>
  );
}
  • Вопрос задан
  • 215 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы