Изменение стиля элемента после завершения анимации в react-spring

#reactjs #react-hooks #react-spring

Вопрос:

У меня есть очень простая анимация с использованием react-spring. Цель состоит в том, чтобы анимировать высоту элемента, а затем, после завершения анимации, установить высоту этого элемента в «авто».

Вот что я пытаюсь сделать:

   useEffect(() => {
    if (!accordionBodyRef.current) return;
    const accordionBodyDiv = accordionBodyRef.current;
    const height = `${accordionBodyDiv.scrollHeight}px`;
    if (isOpen) {
      bodySpringApi.start({
        to: { height },
        onRest: () => {
          accordionBodyDiv.setAttribute("style", "height: auto;");
          accordionBodyDiv.style.height = "auto";
        },
      });
    } else {
      bodySpringApi.start({
        from: {
          height,
        },
        to: {
          height: "0px",
        },
      });
    }
  }, [isOpen, bodySpringApi]);
 

Я пытаюсь вручную задать стиль div, используя ссылку в методе «onRest» api spring, но это просто не работает.

Есть ли что-нибудь еще, что я могу попробовать?

Комментарии:

1. Можете ли вы привести пример codesandbox?

2. Вот codesandbox @Josh, я смог временно решить проблему, добавив дополнительный фрагмент состояния, обновив его в onRest, а затем установив высоту: авто; в отдельном эффекте использования. Хотя я все равно хотел бы знать, как сделать это лучше.