Получение ошибки Typescript с помощью useCallback () в Visual Studio Code - PullRequest
0 голосов
/ 03 августа 2020

Я новичок в перехватчиках React и встречал этот код: const multiply = useCallback((value: number) => value * multiplier, [multiplier]); (от https://medium.com/@jrwebdev / response-hooks-in-typescript-88fce7001d0d )

Это сбивает меня с толку и код Visual Studio, который сообщает об этой ошибке: Cannot find name 'multiplier'. Did you mean 'multiply'?ts(2552)

Я чувствую, что достаточно хорошо знаю Typescript, но не понимаю [множитель] или как решить эту проблему. Я полагаю, что это правильный Typescript (кажется, он действительно компилируется). Может ли кто-нибудь объяснить мне, как работает этот синтаксис и как заставить Visual Code Studio принять его? Или если это нужно исправить?

1 Ответ

1 голос
/ 03 августа 2020

Полный пример на этой странице:

const multiplier = 2;
// inferred as (value: number) => number
const multiply = useCallback((value: number) => value * multiplier, [multiplier]);

Что отлично компилируется.

multiplier здесь просто переменная, которая где-то определена . Это может быть константа, такая как приведенный выше код, или что-то, извлеченное из состояния компонента, или полученное в результате вызова API. В этом нет ничего особенного, это просто локальная переменная, которую необходимо определить перед ее использованием.

А [multiplier] просто означает, что multiplier - единственное значение в массиве. В этом случае значение [2]. Он представляет зависимости обратного вызова. Если какие-либо зависимости изменятся, обратный вызов будет воссоздан. Таким образом, должен быть способ передать несколько зависимостей. В данном случае только один: multiplier. Таким образом, вы передаете массив с одним элементом как [multiplier].

...