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

React hook 'useState' is called conditionally報(bào)錯(cuò)解決

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

總覽

當(dāng)我們有條件地使用useState鉤子時(shí),或者在一個(gè)可能有返回值的條件之后,會(huì)產(chǎn)生"React hook 'useState' is called conditionally"錯(cuò)誤。為了解決該錯(cuò)誤,將所有React鉤子移到任何可能油返回值的條件之上。

這里有個(gè)例子用來(lái)展示錯(cuò)誤是如何發(fā)生的。

import React, {useState} from 'react';
export default function App() {
  const [count, setCount] = useState(0);
  if (count > 0) {
    return <h1>Count is greater than 0</h1>;
  }
  // ?? React Hook "useState" is called conditionally.
  //React Hooks must be called in the exact same order
  // in every component render. Did you accidentally call
  // a React Hook after an early return?
  const [message, setMessage] = useState('');
  return (
    <div>
      <h2>Count: {count}</h2>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
}

上述代碼片段的問(wèn)題在于,我們使用的第二個(gè)useState鉤子,位于可能有返回值的條件之后。

頂層調(diào)用

為了解決該問(wèn)題,我們必須在最頂層調(diào)用React鉤子

import React, {useState} from 'react';
export default function App() {
  const [count, setCount] = useState(0);
  // ??? move hooks above condition that might return
  const [message, setMessage] = useState('');
  // ??? any conditions that might return must be below all hooks
  if (count > 0) {
    return <h1>Count is greater than 0</h1>;
  }
  return (
    <div>
      <h2>Count: {count}</h2>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
}

我們把第二個(gè)useState鉤子移到了可能返回值的條件之上。

這樣就解決了這個(gè)錯(cuò)誤,因?yàn)槲覀儽仨毚_保每次組件渲染時(shí),React鉤子都以相同的順序被調(diào)用。

這意味著我們不允許在循環(huán)、條件或嵌套函數(shù)內(nèi)使用鉤子。

我們絕不應(yīng)該有條件地調(diào)用鉤子。

import React, {useState} from 'react';
export default function App() {
  const [count, setCount] = useState(0);
  if (count === 0) {
    // ?? React Hook "useState" is called conditionally.
    // React Hooks must be called in the exact same order in every component render.
    const [message, setMessage] = useState('');
  }
  return (
    <div>
      <h2>Count: {count}</h2>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
}

上面的代碼片段導(dǎo)致了錯(cuò)誤,因?yàn)槲覀冇袟l件地調(diào)用第二個(gè)useState鉤子。

這是不允許的,因?yàn)殂^子的數(shù)量和鉤子調(diào)用的順序,在我們的函數(shù)組件的重新渲染中必須是相同的。

為了解決這個(gè)錯(cuò)誤,我們必須把useState的調(diào)用移到頂層,而不是有條件地調(diào)用這個(gè)鉤子。

就像文檔中所說(shuō)的:

  • 只在最頂層使用 Hook
  • 不要在循環(huán),條件或嵌套函數(shù)中調(diào)用 Hook
  • 確保總是在你的 React 函數(shù)的最頂層以及任何 return 之前使用 Hook
  • 在 React 的函數(shù)組件中調(diào)用 Hook
  • 在自定義 Hook 中調(diào)用其他 Hook

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

以上就是React hook 'useState' is called conditionally報(bào)錯(cuò)解決的詳細(xì)內(nèi)容,更多關(guān)于React報(bào)錯(cuò)useState conditionally的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • react build 后打包發(fā)布總結(jié)

    react build 后打包發(fā)布總結(jié)

    這篇文章主要介紹了react build 后打包發(fā)布總結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • React如何動(dòng)態(tài)控制偽元素樣式

    React如何動(dòng)態(tài)控制偽元素樣式

    這篇文章主要介紹了React如何動(dòng)態(tài)控制偽元素樣式問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • react native實(shí)現(xiàn)往服務(wù)器上傳網(wǎng)絡(luò)圖片的實(shí)例

    react native實(shí)現(xiàn)往服務(wù)器上傳網(wǎng)絡(luò)圖片的實(shí)例

    下面小編就為大家?guī)?lái)一篇react native實(shí)現(xiàn)往服務(wù)器上傳網(wǎng)絡(luò)圖片的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • React?Fiber構(gòu)建源碼解析

    React?Fiber構(gòu)建源碼解析

    這篇文章主要為大家介紹了React?Fiber構(gòu)建源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • React Draggable插件如何實(shí)現(xiàn)拖拽功能

    React Draggable插件如何實(shí)現(xiàn)拖拽功能

    這篇文章主要介紹了React Draggable插件如何實(shí)現(xiàn)拖拽功能問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 比ant更豐富Modal組件功能實(shí)現(xiàn)示例詳解

    比ant更豐富Modal組件功能實(shí)現(xiàn)示例詳解

    這篇文章主要為大家介紹了比ant更豐富Modal組件功能實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • webpack入門+react環(huán)境配置

    webpack入門+react環(huán)境配置

    webpack是一個(gè)前端資源模塊化管理和打包工具,說(shuō)白了就是方便我們管理自己的常用的一些代碼,比如你開發(fā)中用到sass以及jade同時(shí)用到es6,開發(fā)時(shí)你不可能改動(dòng)某個(gè)地方就挨個(gè)命令去轉(zhuǎn)換再到瀏覽器去看效果,那樣效率是非常低的。所以webpack幫我們省去了那些多余的步驟。
    2017-02-02
  • react組件實(shí)例屬性props實(shí)例詳解

    react組件實(shí)例屬性props實(shí)例詳解

    這篇文章主要介紹了react組件實(shí)例屬性props,本文結(jié)合實(shí)例代碼給大家簡(jiǎn)單介紹了props使用方法,代碼簡(jiǎn)單易懂,需要的朋友可以參考下
    2023-01-01
  • 使用react完成點(diǎn)擊返回頂部操作

    使用react完成點(diǎn)擊返回頂部操作

    本文主要介紹了使用react完成點(diǎn)擊返回頂部操作,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 詳解React 代碼共享最佳實(shí)踐方式

    詳解React 代碼共享最佳實(shí)踐方式

    這篇文章主要介紹了React 代碼共享最佳實(shí)踐方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-05-05

最新評(píng)論

泸州市| 道孚县| 明溪县| 库车县| 巩留县| 手机| 祁连县| 夏河县| 湖州市| SHOW| 左权县| 五指山市| 东台市| 秦安县| 乐都县| 岳阳县| 华池县| 泰顺县| 双鸭山市| 泗洪县| 田阳县| 长岭县| 惠州市| 淳化县| 武清区| 买车| 南岸区| 贺兰县| 洱源县| 定襄县| 伊宁市| 延川县| 晋城| 乌什县| 盐边县| 吉安县| 固阳县| 涟水县| 嘉祥县| 苗栗县| 沂源县|