最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

React Hook 'useEffect' is called in function報錯解決

 更新時間:2022年12月02日 10:22:32   作者:Borislav Hadzhiev  
這篇文章主要為大家介紹了React Hook 'useEffect' is called in function報錯解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

總覽

為了解決錯誤"React Hook 'useEffect' is called in function that is neither a React function component nor a custom React Hook function",可以將函數(shù)名的第一個字母大寫,或者使用use作為函數(shù)名的前綴。比如說,useCounter使其成為一個組件或一個自定義鉤子。

這里有個示例用來展示錯誤是如何發(fā)生的。

// App.js
import React, {useEffect, useState} from 'react';
// ??? Not a component (lowercase first letter)
// not a custom hook (doesn't start with use)
function counter() {
  const [count, setCount] = useState(0);
  // ?? React Hook "useEffect" is called in function "counter" that
  // is neither a React function component nor a custom React Hook function.
  // React component names must start with an uppercase letter.
  // React Hook names must start with the word "use".
  useEffect(() => {
    console.log(count);
  }, [count]);
  return (
    <div>
      <h2>Count: {count}</h2>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
}

上述代碼片段的問題在于,我們在一個函數(shù)中使用了useEffect鉤子,而這個函數(shù)不是一個組件,因為它以小寫字母開頭,也不是一個自定義鉤子,因為它的名字不是以use開頭。

聲明組件

如果你想聲明一個組件,請將你的函數(shù)的第一個字母大寫。

// App.js
import React, {useEffect, useState} from 'react';
// ??? is now a component (can use hooks)
function Counter() {
  const [count, setCount] = useState(0);
  useEffect(() => {
    console.log(count);
  }, [count]);
  return (
    <div>
      <h2>Count: {count}</h2>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
}
export default function App() {
  return (
    <div>
      <Counter />
    </div>
  );
}

函數(shù)名必須以大寫字母開頭,因為這有助于React區(qū)分諸如p、div、span等內(nèi)置元素和我們定義的組件。

就像文檔中所說的:

  • 只從React函數(shù)組件或自定義鉤子中調(diào)用Hook
  • 只在最頂層使用 Hook
  • 不要在循環(huán),條件或嵌套函數(shù)中調(diào)用 Hook
  • 確??偸窃谀愕?React 函數(shù)的最頂層以及任何 return 之前使用 Hook

聲明自定義鉤子

如果你想聲明一個自定義鉤子,自定義鉤子的名稱必須以use開頭,比如說useCounter。

import React, {useEffect, useState} from 'react';
// ??? is a custom hook (name starts with use)
function useCounter() {
  const [count, setCount] = useState(0);
  useEffect(() => {
    console.log(count);
  }, [count]);
  return [count, setCount];
}
export default function App() {
  const [count, setCount] = useCounter();
  return (
    <div>
      <h2>Count: {count}</h2>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
}

自定義鉤子的名字必須以use開頭,這樣React才能識別你的函數(shù)是一個自定義鉤子。

總結(jié)

為了解決"React Hook 'useEffect' is called in function that is neither a React function component nor a custom React Hook function"的錯誤,確保只從React函數(shù)組件或自定義鉤子中調(diào)用鉤子。

翻譯原文鏈接:bobbyhadz.com/blog/react-…

以上就是React Hook 'useEffect' is called in function報錯解決的詳細(xì)內(nèi)容,更多關(guān)于React報錯Hook useEffect function的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • JS跨域解決方案react配置反向代理

    JS跨域解決方案react配置反向代理

    這篇文章主要為大家介紹了JS跨域解決方案react配置反向代理的示例內(nèi)容詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • React實現(xiàn)錨點跳轉(zhuǎn)組件附帶吸頂效果的示例代碼

    React實現(xiàn)錨點跳轉(zhuǎn)組件附帶吸頂效果的示例代碼

    這篇文章主要為大家詳細(xì)介紹了React如何實現(xiàn)移動端錨點跳轉(zhuǎn)組件附帶吸頂效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2023-01-01
  • React Native可復(fù)用 UI分離布局組件和狀態(tài)組件技巧

    React Native可復(fù)用 UI分離布局組件和狀態(tài)組件技巧

    這篇文章主要為大家介紹了React Native可復(fù)用 UI分離布局組件和狀態(tài)組件使用技巧,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • React?Hooks使用startTransition與useTransition教程示例

    React?Hooks使用startTransition與useTransition教程示例

    這篇文章主要為大家介紹了React?Hooks使用startTransition與useTransition教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • useReducer?createContext代替Redux原理示例解析

    useReducer?createContext代替Redux原理示例解析

    這篇文章主要為大家介紹了useReducer?createContext代替Redux原理示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 在?React?Native?中給第三方庫打補(bǔ)丁的過程解析

    在?React?Native?中給第三方庫打補(bǔ)丁的過程解析

    這篇文章主要介紹了在?React?Native?中給第三方庫打補(bǔ)丁的過程解析,有時使用了某個React Native 第三方庫,可是它有些問題,我們不得不修改它的源碼,本文介紹如何修改源碼又不會意外丟失修改結(jié)果的方法,需要的朋友可以參考下
    2022-08-08
  • React Native自定義路由管理的深入理解

    React Native自定義路由管理的深入理解

    路由管理的功能主要指的頁面跳轉(zhuǎn)、goBack、帶參數(shù)跳轉(zhuǎn)等功能,這篇文章主要給大家介紹了關(guān)于React Native自定義路由管理的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • react lazyLoad加載使用詳解

    react lazyLoad加載使用詳解

    lazy是React提供的懶(動態(tài))加載組件的方法,React.lazy(),路由組件代碼會被分開打包,能減少打包體積、延遲加載首屏不需要渲染的組件,依賴內(nèi)置組件Suspense標(biāo)簽的fallback屬性,給lazy加上loading指示器組件,Suspense目前只和lazy配合實現(xiàn)組件等待加載指示器的功能
    2023-03-03
  • react map使用方法實例詳解

    react map使用方法實例詳解

    map()方法是在React中常用的數(shù)組處理方法之一,可以用于遍歷數(shù)組、生成組件列表以及進(jìn)行數(shù)據(jù)轉(zhuǎn)換等操作,通過合理運(yùn)用map()方法,可以更靈活地處理和展示數(shù)據(jù),下面給大家講解react map使用方法,感興趣的朋友一起看看吧
    2023-10-10
  • ReactHook使用useState更新變量后,如何拿到變量更新后的值

    ReactHook使用useState更新變量后,如何拿到變量更新后的值

    這篇文章主要介紹了ReactHook使用useState更新變量后,如何拿到變量更新后的值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03

最新評論

青冈县| 吉木乃县| 朔州市| 达日县| 元江| 江山市| 长阳| 漳浦县| 青神县| 中超| 东安县| 清水县| 卢氏县| 哈巴河县| 阿鲁科尔沁旗| 大悟县| 青浦区| 济南市| 永州市| 久治县| 宜宾市| 疏附县| 泾阳县| 临清市| 衡南县| 桃江县| 板桥市| 香河县| 全州县| 嘉兴市| 天气| 政和县| 互助| 玉林市| 紫云| 林口县| 巴林左旗| 岳阳市| 平利县| 汝南县| 康保县|