@Asker1888

Как расширить или переписать свойство интерфейса компонента сторонней библиотеки?

Добрый день!
Установил компонент Link из пакета react-scroll.

На этот компонент мне нужно повесить onClick с обработчиком, который обрабатывает event, но в интерфейсе компонента onClick не предполагает передачу события.
Как можно расширить интерфейс не изменяя typing.d.ts внутри самого пакета?

Как пытаюсь использовать:
<ScrollLink 
   to="program" 
   duration={300} 
   smooth={true} 
   offset={-50} 
   className="Link Header-Link" 
   data-ymgoal="MY_GOAO"
   onClick={ ymHandler }
  >


Интерфейс:
export interface ReactScrollLinkProps {
    to: string;
    containerId?: string;
    activeClass?: string;
    spy?: boolean;
    hashSpy?: boolean;
    smooth?: boolean | string;
    offset?: number;
    delay?: number;
    isDynamic?: boolean;
    onClick?(): void;
    duration?: number | string;
    absolute?: boolean;
    onSetActive?(to: string): void;
    onSetInactive?(): void;
    ignoreCancelEvents?: boolean;
}


Моя функция-обработчик:
const ymHandler = (event: any): void => {
    console.log(event);
    const goal = event.currentTarget.getAttribute('data-ymgoal');
    ym('reachGoal', goal);
  }
  • Вопрос задан
  • 231 просмотр
Пригласить эксперта
Ответы на вопрос 2
@shsv382
Можно обернуть его в div, а на него навесить обработчик onClick, поменяв
const goal = event.currentTarget.getAttribute('data-ymgoal');

на
const goal = event.currentTarget.firstElementChild.getAttribute('data-ymgoal');
Ответ написан
@forspamonly2
пофиксить тайпинг и отправить пуллреквест в DefinitelyTyped.

потому что сам react-scroll событие передаёт.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы