Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: Ошибка при установке disabled для Button с компонентом Link из Next.js #7093

Open
Pavel1711 opened this issue Jun 27, 2024 · 1 comment

Comments

@Pavel1711
Copy link

Pavel1711 commented Jun 27, 2024

Описание

При установке disabled <Button href="/" Component={Link} disabled> появляется ошибка.
Error: Failed prop type: The prop href expects a string or object in <Link>, but got undefined instead.
Ошибка начала появляться начиная с версии 6.0.0 и продолжает воспроизводиться на 6.1.2

Версия

6.1.2

В каких браузерах воспроизводится проблема?

Chrome

Шаги воспроизведения

import Link from 'next/link';
import { Button } from '@vkontakte/vkui';

const App = () => {
  return (
      <Button href="/" Component={Link} disabled>
         Button with href
      </Button>
  );
};

export default App;

Ожидаемое поведение

No response

Скриншоты

Снимок экрана 2024-06-27 в 17 47 56

Пример с воспроизведением

https://codesandbox.io/p/sandbox/button-73htzs?file=%2Fsrc%2FApp.js

@mendrew
Copy link
Contributor

mendrew commented Jun 27, 2024

Привет!

Интересное issue.
Мы действительно перестаём передавать href если компонент не кликабельный, а при disabled он не кликабельный.

const isClickable = checkClickable(restProps);

/**
* Проверяем, является ли компонент кликабельным
*/
export function checkClickable<T>(props: ClickableProps<T>): boolean {
return (
(props.href !== undefined ||
props.onClick !== undefined ||
props.onClickCapture !== undefined ||
props.Component === 'label') &&
!props.disabled
);
}

if (isClickable) {
return (
<RealClickable
baseClassName={baseClassName}
focusVisibleMode={focusVisibleMode}
{...commonProps}
{...restProps}
/>
);
}
return <NonClickable baseClassName={baseClassName} {...commonProps} {...restProps} />;

Посмотрим что можно сделать, чтобы ничего не поломать.
Первое что видится, это дать возможность передать href вот тут

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: 🗃 Backlog
Development

No branches or pull requests

2 participants