首页 > 解决方案 > 尝试使用自定义钩子会给出错误“在声明之前使用块范围变量'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”在分配之前使用。

标签: reactjstypescriptreact-hooks

解决方案


看起来这是某个地方的小语法错误。


推荐阅读