Без возможности связать ref с ВСЕМИ УЗЛАМИ, СОДЕРЖАЩИМИ МАТЕРИАЛ-UI , не существует надежного способа интеграции библиотек анимации, ориентированных на указанные c узлы.
В проекте material-ui GitHub есть несколько связанных вопросов. Я опубликовал обходной путь на Выпуск # 17010 , пока материал-пользовательский интерфейс не включит возможность добавления ref ко всем сгенерированным узлам.
Связанные проблемы:
- Как добавить ссылку на компонент Box? # 19284
- [Box] Разрешить ref для Box # 19275
- ref отсутствует в Box в определении TypeScript # 17010
Промежуточное решение:
// 1. Import style library, either Emotion or Styled-Components
import styled from "@emotion/styled";
// 2. Recreate the Material-UI Box with a styled component
const StyledBox = styled(Box)``;
// 3. Usage in the render
<StyledBox ref={boxRef}>Box Content</StyledBox>
ПРИМЕЧАНИЕ: Использование @ material-ui / core / styles не работает, требуя использования emotion или Styled-компоненты . Мы вынуждены использовать эмоции над стилевыми компонентами из-за проблемы мерцания анимации, уникально генерируемой стилевыми компонентами.