Реакция собственной ошибки TypeScript: свойство «calcYOffset» не существует для типа «ScrollView» - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть ссылка ScrollView:

const childRef = React.useRef<null | ScrollView>(null);

<ScrollView
  onScroll={() => {
    childRef.current?.calcYOffset();
  }}

Однако calcYOffset выдает мне эту ошибку:

TS2339: свойство calcYOffset не существует в введите 'ScrollView'.

Ссылка прикреплена в дочернем компоненте:

const containerViewRef = React.useRef<View>(null);

React.useImperativeHandle(ref, () => ({
      calcYOffset: () => {
        containerViewRef.current?.measure(
          (
            x: any,
            y: any,
            width: any,
            height: any,
            pageX: any,
            pageY: React.SetStateAction<number>,
          ) => {
            setViewYPosition(pageY);
          },
        );
      },
    }));

1 Ответ

0 голосов
/ 16 апреля 2020

Ошибка машинописного текста вызвана const childRef = React.useRef<null | ScrollView>(null); Вместо <null | ScrollView>, вы должны указать тип вашего пользовательского компонента (тот, который использует useImperativeHandle). Вы можете сделать это так:

type Handles = {
  calcYOffset: () => void;
}

type Props = { ... your custom component props };

const CustomComponent: React.RefForwardingComponent<Handles, Props> = // your component

// then usage:
const childRef = React.useRef<CustomComponent>(null);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...