亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

解決React報錯React.Children.only expected to receive single React element child

 更新時間:2023年01月05日 14:53:07   作者:chuck  
這篇文章主要為大家介紹了React報錯React.Children.only expected to receive single React element child分析解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

總覽

當(dāng)我們把多個子元素傳遞給一個只期望有一個React子元素的組件時,會產(chǎn)生"React.Children.only expected to receive single React element child"錯誤。為了解決該錯誤,將所有元素包裝在一個React片段或一個封閉div中。

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

// App.js
import React from 'react';
function Button(props) {
  // ??? expects single child element
  return React.Children.only(props.children);
}
export default function App() {
  return (
    <Button>
      <button
        onClick={() => {
          console.log('Button clicked');
        }}
      >
        Click
      </button>
      <button
        onClick={() => {
          console.log('Button clicked');
        }}
      >
        Click
      </button>
    </Button>
  );
}

Button元素期望傳遞單個子元素,但我們在同級下傳遞了2個子元素。

React片段

我們可以使用React片段來解決該錯誤。

import React from 'react';
function Button(props) {
  // ??? expects single child element
  return React.Children.only(props.children);
}
export default function App() {
  return (
    <Button>
      <>
        <button
          onClick={() => {
            console.log('Button clicked');
          }}
        >
          Click
        </button>
        <button
          onClick={() => {
            console.log('Button clicked');
          }}
        >
          Click
        </button>
      </>
    </Button>
  );
}

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

你可能還會看到使用了更詳細(xì)的片段語法。

import React from 'react';
function Button(props) {
  // ??? expects single child element
  return React.Children.only(props.children);
}
export default function App() {
  return (
    <Button>
      <React.Fragment>
        <button
          onClick={() => {
            console.log('Button clicked');
          }}
        >
          Click
        </button>
        <button
          onClick={() => {
            console.log('Button clicked');
          }}
        >
          Click
        </button>
      </React.Fragment>
    </Button>
  );
}

上面的兩個例子達(dá)到了相同的結(jié)果--它們對子元素列表進(jìn)行分組,而沒有向DOM中添加額外的節(jié)點(diǎn)。

現(xiàn)在大多數(shù)代碼編輯器都支持更簡明的語法,因此更常用。

DOM元素

另一個解決方案是將子元素包裹在另一個DOM元素中,例如一個div

import React from 'react';
function Button(props) {
  // ??? expects single child element
  return React.Children.only(props.children);
}
export default function App() {
  return (
    <Button>
      <div>
        <button
          onClick={() => {
            console.log('Button clicked');
          }}
        >
          Click
        </button>
        <button
          onClick={() => {
            console.log('Button clicked');
          }}
        >
          Click
        </button>
      </div>
    </Button>
  );
}

這樣就解決了錯誤,因為我們現(xiàn)在向Button組件傳遞了單一的子元素。

這種方法只有在添加一個額外的div而不會破壞你的布局時才有效,否則就使用一個片段,因為片段不會向DOM添加任何額外的標(biāo)記。

這是很有必要的,因為Button組件使用React.Children.only函數(shù)來驗證children屬性是否只有一個子元素,并返回它。否則該方法會拋出一個錯誤。

React.Children.only方法經(jīng)常被用于第三方庫,以確保API的消費(fèi)者在使用該組件時只提供一個子元素。

以上就是解決React報錯React.Children.only expected to receive single React element child的詳細(xì)內(nèi)容,更多關(guān)于React報錯single element child的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 重新理解?React?useRef原理

    重新理解?React?useRef原理

    這篇文章主要為大家介紹了React?useRef原理的深入理解分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • React中常見的動畫實現(xiàn)的幾種方式

    React中常見的動畫實現(xiàn)的幾種方式

    本篇文章主要介紹了React中常見的動畫實現(xiàn)的幾種方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • React中獲取數(shù)據(jù)的3種方法及優(yōu)缺點(diǎn)

    React中獲取數(shù)據(jù)的3種方法及優(yōu)缺點(diǎn)

    這篇文章主要介紹了React中獲取數(shù)據(jù)的3種方法及優(yōu)缺點(diǎn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • react如何用懶加載減少首屏加載時間

    react如何用懶加載減少首屏加載時間

    這篇文章主要介紹了react如何利用懶加載減少首屏加載時間,幫助大家更好的理解和學(xué)習(xí)使用react,感興趣的朋友可以了解下
    2021-04-04
  • React組件通信實現(xiàn)流程詳解

    React組件通信實現(xiàn)流程詳解

    這篇文章主要介紹了React組件通信,在開發(fā)中組件通信是React中的一個重要的知識點(diǎn),本文通過實例代碼給大家講解react中常用的父子、跨組件通信的方法,需要的朋友可以參考下
    2022-12-12
  • react中如何使用監(jiān)聽

    react中如何使用監(jiān)聽

    在 React 中,您可以使用?addEventListener?函數(shù)來監(jiān)聽事件,本文通過實例代碼給大家介紹react中如何使用監(jiān)聽,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • ios原生和react-native各種交互的示例代碼

    ios原生和react-native各種交互的示例代碼

    本篇文章主要介紹了ios原生和react-native各種交互的示例代碼,非常具有實用價值,需要的朋友可以參考下
    2017-08-08
  • react中Suspense的使用詳解

    react中Suspense的使用詳解

    這篇文章主要介紹了react中Suspense的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • React合成事件原理解析

    React合成事件原理解析

    事件是在編程時系統(tǒng)內(nèi)發(fā)生的動作或者發(fā)生的事情,而開發(fā)者可以某種方式對事件做出回應(yīng),而這里有幾個先決條件,這篇文章主要介紹了React合成事件原理解析,需要的朋友可以參考下
    2022-07-07
  • React高階組件使用詳細(xì)介紹

    React高階組件使用詳細(xì)介紹

    高階組件就是接受一個組件作為參數(shù)并返回一個新組件(功能增強(qiáng)的組件)的函數(shù)。這里需要注意高階組件是一個函數(shù),并不是組件,這一點(diǎn)一定要注意,本文給大家分享React高階組件使用小結(jié),一起看看吧
    2023-01-01

最新評論