欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決React?hook?'useState'?cannot?be?called?in?a?class?component報(bào)錯(cuò)

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

總覽

當(dāng)我們嘗試在類組件中使用useState 鉤子時(shí),會(huì)產(chǎn)生"React hook 'useState' cannot be called in a class component"錯(cuò)誤。為了解決該錯(cuò)誤,請(qǐng)將類組件轉(zhuǎn)換為函數(shù)組件。因?yàn)殂^子不能在類組件中使用。

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

// App.js
import {useState, useEffect} from 'react';
class Example {
  render() {
    // ?? React Hook "useState" cannot be called in a class component.
    // React Hooks must be called in a React function component or a custom React Hook function.
    const [count, setCount] = useState(0);
    // ?? React Hook "useEffect" cannot be called in a class component.
    // React Hooks must be called in a React function component or a custom React Hook function.
    useEffect(() => {
      console.log('hello world');
    }, []);
    return (
      <div>
        <button onClick={() => setCount(count + 1)}>Increment</button>
      </div>
    );
  }
}

導(dǎo)致這個(gè)錯(cuò)誤的原因是,鉤子只能在函數(shù)組件或自定義鉤子中使用,而我們正試圖在一個(gè)類中使用鉤子。

函數(shù)組件

解決該錯(cuò)誤的一種方法是,將類組件轉(zhuǎn)換為函數(shù)組件。

// App.js
import {useState, useEffect} from 'react';
export default function App() {
  const [count, setCount] = useState(0);
  useEffect(() => {
    console.log('hello world');
  }, []);
  return (
    <div>
      <h2>Count {count}</h2>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
}

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

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

類組件中使用setState()

另外,我們可以使用一個(gè)類組件,用setState()方法更新?tīng)顟B(tài)。

// App.js
import React from 'react';
export default class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      count: 0,
    };
  }
  render() {
    return (
      <div>
        <h2>Count: {this.state.count}</h2>
        <button onClick={() => this.setState({count: this.state.count + 1})}>
          Increment
        </button>
      </div>
    );
  }
}

請(qǐng)注意,在較新的代碼庫(kù)中,函數(shù)組件比類更常被使用。

它們也更方便,因?yàn)槲覀儾槐乜紤]this關(guān)鍵字,并使我們能夠使用內(nèi)置和自定義鉤子。

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

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

相關(guān)文章

  • React?在非組件環(huán)境切換路由的方法

    React?在非組件環(huán)境切換路由的方法

    這篇文章主要介紹了React?在非組件環(huán)境切換路由的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-10-10
  • 一百多行代碼實(shí)現(xiàn)react拖拽hooks

    一百多行代碼實(shí)現(xiàn)react拖拽hooks

    這篇文章主要介紹了一百多行代碼實(shí)現(xiàn)react拖拽hooks,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 基于React編寫一個(gè)全局Toast的示例代碼

    基于React編寫一個(gè)全局Toast的示例代碼

    前些日子在做項(xiàng)目的時(shí)候,需要封裝一個(gè)Toast組件,我想起之前用過(guò)的庫(kù),只要在入口文件中引入就可以在全局中使用,還是很方便的,借這次機(jī)會(huì)也來(lái)實(shí)現(xiàn)一下,所以本文介紹了React中如何編寫一個(gè)全局Toast,需要的朋友可以參考下
    2024-05-05
  • react如何獲取state的值并更新使用

    react如何獲取state的值并更新使用

    這篇文章主要介紹了react如何獲取state的值并更新使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • react結(jié)合typescript?封裝組件實(shí)例詳解

    react結(jié)合typescript?封裝組件實(shí)例詳解

    這篇文章主要為大家介紹了react結(jié)合typescript?封裝組件實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 淺談react-native熱更新react-native-pushy集成遇到的問(wèn)題

    淺談react-native熱更新react-native-pushy集成遇到的問(wèn)題

    下面小編就為大家?guī)?lái)一篇淺談react-native熱更新react-native-pushy集成遇到的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • React實(shí)現(xiàn)歌詞滾動(dòng)效果(跟隨音樂(lè)播放時(shí)間滾動(dòng))

    React實(shí)現(xiàn)歌詞滾動(dòng)效果(跟隨音樂(lè)播放時(shí)間滾動(dòng))

    這篇文章主要為大家詳細(xì)介紹了React實(shí)現(xiàn)歌詞滾動(dòng)效果(跟隨音樂(lè)播放使勁按滾動(dòng)),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2024-02-02
  • React?antd中setFieldsValu的簡(jiǎn)便使用示例代碼

    React?antd中setFieldsValu的簡(jiǎn)便使用示例代碼

    form.setFieldsValue是antd?Form組件中的一個(gè)方法,用于動(dòng)態(tài)設(shè)置表單字段的值,它接受一個(gè)對(duì)象作為參數(shù),對(duì)象的鍵是表單字段的名稱,值是要設(shè)置的字段值,這篇文章主要介紹了React?antd中setFieldsValu的簡(jiǎn)便使用,需要的朋友可以參考下
    2023-08-08
  • 使用Ant Design Anchor組件的一個(gè)坑及解決

    使用Ant Design Anchor組件的一個(gè)坑及解決

    這篇文章主要介紹了使用Ant Design Anchor組件的一個(gè)坑及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • react中如何使用局部樣式

    react中如何使用局部樣式

    這篇文章主要介紹了react中如何使用局部樣式問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10

最新評(píng)論