reactjs - 尝试使用自定义钩子会给出错误“在声明之前使用块范围变量'X'”。
问题描述
我正在尝试编写我的第一个自定义钩子。
我不明白为什么会显示错误,因为该函数在调用它的几行上方声明了。
相关代码:
function getNextAnswerState(answer: string) {
switch (answer) {
case "blank":
return ("correct");
case "correct":
return ("wrong");
case "wrong":
return ("forgotten");
case "forgotten":
return ("blank");
}
return "blank";
}
function useAnswerState() {
const [answer, setAnswer] = useState("blank");
const handleGetNextCellStatus = () => {
let nextCellStatus = getNextAnswerState(answer)
setAnswer(nextCellStatus);
}
return {answer, handleGetNextCellStatus};
}
interface letterProps {
cellIndex: number,
layerSize: number,
letter: string
}
function LetterCell({cellIndex, layerSize, letter}: letterProps) {
const {answerStatus, setAnswerToNext} = useAnswerState();
...
错误:
[tsserver 2448] [E] 在声明之前使用的块范围变量“useAnswerState”。
[tsserver 2454] [E] 变量“useAnswerState”在分配之前使用。
解决方案
看起来这是某个地方的小语法错误。
推荐阅读
- jquery - 使用带有方法 POST 的 AJAX 时发送的数据有问题
- json - Swashbuckle、Swagger 模式和格式注释或 XML 注释
- python - 如何使用相对路径调用父 python 文件中的文件?
- android-source - 错误:找不到产品“aosp_hydrogen”的配置生成文件
- cloud-foundry - 关于cloudfoundry(CF)中用户定义服务的一些疑惑
- ios - 获取字典数组中具有特定日期值的所有键 SWIFT
- react-native - React Native 中 Android 设备 WebView 的注入 JavaScript 中的调度操作不起作用
- webpack - 如何知道一个模块是否正在通过 worker-loader 编译
- javascript - 验证 google docs 和 office 365 url
- c - 使用 C 的 IEEE 754 单精度 IEEE 754 代码的十进制