Мне нравится внешний вид Стилизованного компонента пользовательского интерфейса материала api ( не библиотека стилевых компонентов ), но я ' У меня проблемы с превращением моего простого компонента кнопки в связанную кнопку.
Как вставить ссылку activ-router-dom в кнопку «Компонент в стиле интерфейса пользователя»?
Ранее типичный подход Material UI HOC api позволял мне добавить связанную кнопку «отчеты» следующим образом. Он прекрасно работает, но требует гораздо больше шаблонного (не показано здесь):
<Button
variant="contained"
color="primary"
className={classes.button}
component={Link}
to="/reports"
>
<ShowChartIcon className={classes.buttonIcon} />
Reports
</Button>

# 1 Очевидный подход: Когда я следую этому шаблону и включаю свойства component
и to
моего собственного компонента в стиле MUI с именем <MyButton>
, я получаю ошибку машинописного текста, сообщающую, что эти свойства не не существует.

# 2 Другой подход: В соответствии с шаблоном, предложенным в этом материале UI GitHub выпуска , кнопка действительно ссылается на экран отчетов, но mui variant
и color
потеряны:
<MyButton
variant="contained"
color="primary"
{...{
component: Link,
to: `/reports`
} as any}
>
<MyShowChartIcon />
Reports
</MyButton>

# 3 Обходной подход: Менее желательный вариант - обернуть кнопку в <Link>
. Это создает рабочую ссылку, но также вносит немного непреднамеренного стиля.
<Link to="/reports">
<MyButton
variant="contained"
color="primary"
>
<MyShowChartIcon />
Reports
</MyButton>
</Link>
