解決 React.js “Invalid hook call. Hooks can only be called inside of the body of a function component” 常見錯誤

React.js 是一個非常受歡迎的 JavaScript 函式庫,它可以讓開發者快速開發出高品質的網頁應用程式。然而,有時候開發者會遇到一些問題,其中一個常見的錯誤是 “Invalid hook call. Hooks can only be called inside of the body of a function component”。

這個錯誤的原因是因為 React.js 的 Hooks 功能只能在函式組件的內容中被調用。Hooks 是 React.js 中一個新的功能,它可以讓開發者在函式組件中使用狀態和其他 React 特性,而不需要使用 class 組件。

要解決這個問題,開發者需要確保他們的 Hooks 只在函式組件的內容中被調用。例如,如果你想在你的組件中使用 useState Hook,你需要確保它只在函式組件的內容中被調用,而不是在其他地方,例如在函式組件的外部或者在其他函式中。

// 錯誤的示例
function MyComponent() {
  const [state, setState] = useState(initialState);
}

// 正確的示例
function MyComponent() {
  const [state, setState] = useState(initialState);
  // ...
}

另外,你也可以使用 useEffect Hook 來替代 componentDidMountcomponentDidUpdate 生命週期函式,但是你也需要確保它只在函式組件的內容中被調用。

// 錯誤的示例
function MyComponent() {
  useEffect(() => {
    // ...
  });
}

// 正確的示例
function MyComponent() {
  useEffect(() => {
    // ...
  });
  // ...
}

總之,如果你遇到 “Invalid hook call. Hooks can only be called inside of the body of a function component” 這個錯誤,你需要確保你的 Hooks 只在函式組件的內容中被調用,而不是在其他地方。這樣你就可以解決這個問題,並且繼續開發你的 React.js 應用程式。

Categorized in:

Tagged in:

,