在 Visual Studio 代码中使用 useCallback() 获取 Typescript 错误

Getting a Typescript error with useCallback() in Visual Studio Code

我是 React 钩子的新手,运行 处理了这段代码: const multiply = useCallback((value: number) => value * multiplier, [multiplier]); (来自 https://medium.com/@jrwebdev/react-hooks-in-typescript-88fce7001d0d

这让我和 Visual Studio 代码感到困惑,它报告了这个错误: Cannot find name 'multiplier'. Did you mean 'multiply'?ts(2552)

我觉得我对 Typescript 相当了解,但我不了解 [multiplier] 或如何解决此问题。我想它是正确的 Typescript(它似乎确实可以编译)。有人可以向我解释这种语法的工作原理以及如何让 Visual Code Studio 接受它吗?或者是否需要修复?

该页面上的完整示例是这样的:

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

Which compiles just fine.

multiplier这里只是在某处定义的一个变量。它可以像上面的代码一样是一个常量,或者是从组件状态中提取的东西,或者来自 API 调用。它没有什么特别之处,它只是一个局部变量,需要在使用之前定义它。

[multiplier] 只是意味着 multiplier 是数组中的唯一值。在本例中,值为 [2]。它代表回调的依赖关系。如果任何依赖项发生更改,将重新创建回调。所以需要有一种方法可以传入多个依赖。在这种情况下,只有一个:multiplier。因此,您传入一个包含单个项目的数组 [multiplier].