Ошибка машинописного текста, и я не могу назначить функцию RefObject.current И он говорит, что он не может быть вызван - PullRequest
0 голосов
/ 13 июля 2020

Кто-нибудь знает, почему я не могу назначить тип функции типу ref.current?

  useEffect(() => {
    savedHandler.current = handler; // ERROR HERE:
  }, [handler]);

TS2741: свойство 'current' отсутствует в типе '(e: ChangeEvent) = > любой ', но требуется в типе' RefObject '.

позже я пытаюсь вызвать эту функцию и получаю сообщение об ошибке:

   const eventListener = (event: Event) => savedHandler?.current?.(event);

, что дает мне ошибку:

TS2349: это выражение не вызывается. Тип «RefObject» не имеет сигнатур вызовов.

Если я могу назначить функцию текущей, тогда я смогу ее вызвать, не так ли? Но почему меня жаль, что я не могу назначить функцию для "current". Код работает нормально, только эти ошибки TS сводят меня с ума.

1 Ответ

0 голосов
/ 13 июля 2020

Думаю, проблема с типом savedHandler. У меня работает:

function useInterval(callback: () => void) {
  const savedCallback = useRef<typeof callback>();

  useEffect(() => {
    savedCallback.current = callback;
  }, [callback]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...