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

React報錯之組件不能作為JSX組件使用的解決方法

 更新時間:2022年07月29日 08:19:32   作者:chuckQu  
本文主要介紹了React報錯之組件不能作為JSX組件使用的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

總覽

組件不能作為JSX組件使用,出現(xiàn)該錯誤有多個原因:

  • 返回JSX元素數(shù)組,而不是單個元素。
  • 從組件中返回JSX元素或者null以外的任何值。
  • 使用過時的React類型聲明。

返回單個JSX元素

下面是一個錯誤如何發(fā)生的示例。

// App.tsx

// ?? 'App' cannot be used as a JSX component.
// Its return type 'Element[]' is not a valid JSX element.
// Type 'Element[]' is missing the following properties from type 'ReactElement<any, any>': type, props, key
const App = () => {
  return ['a', 'b', 'c'].map(element => {
    return <h2 key={element}>{element}</h2>;
  });
};

export default App;

代碼示例中的問題是,我們返回的是一個JSX元素數(shù)組,而不是單個JSX元素。

為了解決這種情況下的錯誤,我們必須使用React fragment 或者div元素來包裹數(shù)組。

// App.tsx

const App = () => {
  return (
    <>
      {['a', 'b', 'c'].map(element => {
        return <h2 key={element}>{element}</h2>;
      })}
    </>
  );
};

export default App;

現(xiàn)在我們的組件返回了單個JSX元素,這樣錯誤就解決了。

當(dāng)我們需要對子節(jié)點(diǎn)列表進(jìn)行分組而不需要向DOM中添加額外的節(jié)點(diǎn)時,就會使用Fragments。

您可能還會看到使用了更加詳細(xì)的fragments語法。

// App.tsx

import React from 'react';

const App = () => {
  return (
    <React.Fragment>
      {['a', 'b', 'c'].map(element => {
        return <h2 key={element}>{element}</h2>;
      })}
    </React.Fragment>
  );
};

export default App;

你也可以使用div元素來充當(dāng)包裹器,從組件中返回單個JSX元素。

不要忘記返回值

另一個常見原因是,我們從組件中返回JSX元素或者null以外的任意值,或者忘記返回值。

// ?? 'App' cannot be used as a JSX component.
// Its return type 'undefined' is not a valid JSX element.
const App = () => {
  // ??? this returns undefined
  return
  <h2>hello world</h2>
};

export default App;

上述代碼示例返回undefined,因?yàn)槲覀儼逊祷卣Z句放在一行,而把JSX代碼放在下一行,并且沒有使用括號。

我們不允許從組件中返回undefined,因此會出現(xiàn)這個錯誤。

為了解決該錯誤,我們必須確保返回的代碼是可達(dá)的。

const App = () => {
  return (
    <div>
      <h2>hello world</h2>
    </div>
  );
};

export default App;

如果你確信從React組件中,返回了單個JSX元素或者null 。但是錯誤依舊存在,試著更新React類型聲明。

更新React類型聲明

在項(xiàng)目的根目錄下打開終端,運(yùn)行以下命令:

# ??? with NPM
npm install --save-dev @types/react@latest @types/react-dom@latest

# ??? if you also want to update react and react-dom
npm install react@latest react-dom@latest

# ------------------------------

# ??? with YARN
yarn add @types/react@latest @types/react-dom@latest --dev

# ??? if you also want to update react and react-dom
yarn add react@latest react-dom@latest

該命令將會更新你的react類型聲明版本。

確保重啟開發(fā)服務(wù)器,如有必要請重啟IDE。開發(fā)服務(wù)器不會接收這些更改,直到你停止它并重新運(yùn)行npm start命令。

如果錯誤還沒有被解決,嘗試刪除node_modulespackage-lock.json(不是package.json)文件,重新運(yùn)行npm install,重啟IDE。

# ??? delete node_modules and package-lock.json
rm -rf node_modules
rm -f package-lock.json
rm -f yarn.lock

# ??? clean npm cache
npm cache clean --force

npm install

如果錯誤依舊存在,請確保重啟了IDE和開發(fā)服務(wù)器。VSCode經(jīng)常出現(xiàn)故障,有時重啟就能解決問題。

到此這篇關(guān)于React報錯之組件不能作為JSX組件使用的解決方法的文章就介紹到這了,更多相關(guān)React JSX組件使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React渲染機(jī)制超詳細(xì)講解

    React渲染機(jī)制超詳細(xì)講解

    React整個的渲染機(jī)制就是React會調(diào)用render()函數(shù)構(gòu)建一棵Dom樹,在state/props發(fā)生改變的時候,render()函數(shù)會被再次調(diào)用渲染出另外一棵樹,重新渲染所有的節(jié)點(diǎn),構(gòu)造出新的虛擬Dom tree
    2022-11-11
  • React Hook父組件如何獲取子組件的數(shù)據(jù)/函數(shù)

    React Hook父組件如何獲取子組件的數(shù)據(jù)/函數(shù)

    這篇文章主要介紹了React Hook父組件如何獲取子組件的數(shù)據(jù)/函數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 詳解React?Native項(xiàng)目中啟用Hermes引擎

    詳解React?Native項(xiàng)目中啟用Hermes引擎

    這篇文章主要為大家介紹了React?Native項(xiàng)目中啟用Hermes引擎實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • React生命周期原理與用法踩坑筆記

    React生命周期原理與用法踩坑筆記

    這篇文章主要介紹了React生命周期原理與用法,結(jié)合實(shí)例形式總結(jié)分析了react生命周期原理、用法及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • React使用TypeScript的最佳實(shí)踐和技巧

    React使用TypeScript的最佳實(shí)踐和技巧

    在React項(xiàng)目中使用TypeScript可以顯著提高代碼的可維護(hù)性和可讀性,并提供強(qiáng)大的類型檢查功能,減少運(yùn)行時錯誤,以下是一些優(yōu)雅地將TypeScript集成到React項(xiàng)目中的最佳實(shí)踐和技巧,需要的朋友可以參考下
    2024-06-06
  • 在react項(xiàng)目中使用antd的form組件,動態(tài)設(shè)置input框的值

    在react項(xiàng)目中使用antd的form組件,動態(tài)設(shè)置input框的值

    這篇文章主要介紹了在react項(xiàng)目中使用antd的form組件,動態(tài)設(shè)置input框的值,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • React應(yīng)用框架Dva數(shù)據(jù)流向原理總結(jié)分析

    React應(yīng)用框架Dva數(shù)據(jù)流向原理總結(jié)分析

    這篇文章主要為大家介紹了React 應(yīng)用框架Dva數(shù)據(jù)流向原理總結(jié)分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • React的三大屬性你都知道嗎

    React的三大屬性你都知道嗎

    這篇文章主要為大家詳細(xì)介紹了React的三大屬性,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Next.js搭建Monorepo組件庫文檔實(shí)現(xiàn)詳解

    Next.js搭建Monorepo組件庫文檔實(shí)現(xiàn)詳解

    這篇文章主要為大家介紹了Next.js搭建Monorepo組件庫文檔,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • react native 原生模塊橋接的簡單說明小結(jié)

    react native 原生模塊橋接的簡單說明小結(jié)

    這篇文章主要介紹了react native 原生模塊橋接的簡單說明小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02

最新評論

泗阳县| 台东县| 沅陵县| 伊金霍洛旗| 资阳市| 绿春县| 绩溪县| 九江县| 乐平市| 富裕县| 吕梁市| 道真| 偏关县| 永年县| 米泉市| 怀柔区| 阿巴嘎旗| 文安县| 中卫市| 凯里市| 大姚县| 怀安县| 兴仁县| 饶平县| 健康| 三原县| 松潘县| 东乌珠穆沁旗| 商城县| 天镇县| 天全县| 石景山区| 冕宁县| 车致| 泰和县| 阜城县| 信丰县| 祁连县| 哈尔滨市| 景泰县| 汾阳市|