0

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

这让我和报告此错误的 Visual Studio Code 感到困惑: Cannot find name 'multiplier'. Did you mean 'multiply'?ts(2552)

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

4

1 回答 1

1

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

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

编译得很好。

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

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

于 2020-08-03T19:19:18.650 回答