Это сбивает с толку поведение из-за различий в браузере, но поведение Firefox вполне разумно.
В конце концов, имея Link
внутри Button
, вы создаете html, как показано ниже:
<button><a href="/login">Log In</a></button>
В Firefox, похоже, что button
получает событие click и не передает его элементу a
.
Один из способов исправить это - это иметьMaterial-UI Button
использует Link
в качестве внешнего компонента:
<Button
component={Link}
to="/login"
variant="contained"
color="secondary"
style={{ margin: "2rem" }}
>
Log In
</Button>
Это также устраняет некоторые проблемы со стилем (текст, подчеркнутый / синий) с вашим первоначальным подходом (хотя вы могли переопределить значение по умолчанию a
стилей в вашем приложении, чтобы это не было заметно).
Ниже приведен CodeSandbox, демонстрирующий три подхода к кнопке входа в систему:
- Подход к решению с
component={Link} to="/login"
в качестве поддержкиButton
- Простая
<button><Link to="/login">Log In</Link></button>
версия, показывающая, что это также не работает в Firefox - Ваша оригинальная версия
![Edit z6672vqm73](https://codesandbox.io/static/img/play-codesandbox.svg)