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

React報(bào)錯(cuò)之組件不能作為JSX組件使用的解決方法

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

總覽

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

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

返回單個(gè)JSX元素

下面是一個(gè)錯(cuò)誤如何發(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;

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

為了解決這種情況下的錯(cuò)誤,我們必須使用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)在我們的組件返回了單個(gè)JSX元素,這樣錯(cuò)誤就解決了。

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

您可能還會(huì)看到使用了更加詳細(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)包裹器,從組件中返回單個(gè)JSX元素。

不要忘記返回值

另一個(gè)常見原因是,我們從組件中返回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代碼放在下一行,并且沒有使用括號(hào)。

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

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

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

export default App;

如果你確信從React組件中,返回了單個(gè)JSX元素或者null 。但是錯(cuò)誤依舊存在,試著更新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

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

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

如果錯(cuò)誤還沒有被解決,嘗試刪除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

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

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

相關(guān)文章

  • react中的watch監(jiān)視屬性-useEffect介紹

    react中的watch監(jiān)視屬性-useEffect介紹

    這篇文章主要介紹了react中的watch監(jiān)視屬性-useEffect使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • React?高階組件與Render?Props優(yōu)缺點(diǎn)詳解

    React?高階組件與Render?Props優(yōu)缺點(diǎn)詳解

    這篇文章主要weidajai?介紹了React?高階組件與Render?Props優(yōu)缺點(diǎn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • ahooks整體架構(gòu)及React工具庫源碼解讀

    ahooks整體架構(gòu)及React工具庫源碼解讀

    這篇文章主要為大家介紹了ahooks整體架構(gòu)及React工具庫的源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 詳解基于React.js和Node.js的SSR實(shí)現(xiàn)方案

    詳解基于React.js和Node.js的SSR實(shí)現(xiàn)方案

    這篇文章主要介紹了詳解基于React.js和Node.js的SSR實(shí)現(xiàn)方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • react native 文字輪播的實(shí)現(xiàn)示例

    react native 文字輪播的實(shí)現(xiàn)示例

    這篇文章主要介紹了react native 文字輪播的實(shí)現(xiàn)示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • 如何創(chuàng)建自己的第一個(gè)React 頁面

    如何創(chuàng)建自己的第一個(gè)React 頁面

    React是用于構(gòu)建用戶界面的JavaScript庫,本文主要介紹了如何創(chuàng)建自己的第一個(gè)React頁面,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 詳解在React.js中使用PureComponent的重要性和使用方式

    詳解在React.js中使用PureComponent的重要性和使用方式

    這篇文章主要介紹了詳解在React.js中使用PureComponent的重要性和使用方式,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • React state狀態(tài)屬性詳細(xì)講解

    React state狀態(tài)屬性詳細(xì)講解

    React將組件(component)看成一個(gè)狀態(tài)機(jī)(State Machines),通過其內(nèi)部自定義的狀態(tài)(State)和生命周期(Lifecycle)實(shí)現(xiàn)并與用戶交互,維持組件的不同狀態(tài)
    2022-09-09
  • react中的useContext具體實(shí)現(xiàn)

    react中的useContext具體實(shí)現(xiàn)

    useContext是React提供的一個(gè)鉤子函數(shù),用于在函數(shù)組件中訪問和使用Context,useContext的實(shí)現(xiàn)原理涉及React內(nèi)部的機(jī)制,本文給大家介紹react中的useContext具體實(shí)現(xiàn),感興趣的朋友一起看看吧
    2023-11-11
  • webpack手動(dòng)配置React開發(fā)環(huán)境的步驟

    webpack手動(dòng)配置React開發(fā)環(huán)境的步驟

    本篇文章主要介紹了webpack手動(dòng)配置React開發(fā)環(huán)境的步驟,webpack手動(dòng)配置一個(gè)獨(dú)立的React開發(fā)環(huán)境, 開發(fā)環(huán)境完成后, 支持自動(dòng)構(gòu)建, 自動(dòng)刷新, sass語法 等功能...感興趣的小伙伴們可以參考一下
    2018-07-07

最新評(píng)論