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

解決React報錯Encountered?two?children?with?the?same?key

 更新時間:2022年12月02日 14:10:12   作者:Borislav?Hadzhiev  
這篇文章主要為大家介紹了React報錯Encountered?two?children?with?the?same?key解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

總覽

當我們從map()方法返回的兩個或兩個以上的元素具有相同的key屬性時,會產(chǎn)生"Encountered two children with the same key"錯誤。為了解決該錯誤,為每個元素的key屬性提供獨一無二的值,或者使用索引參數(shù)。

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

// App.js
const App = () => {
  // ??? name property is not a unique identifier
  const people = [
    {id: 1, name: 'Alice'},
    {id: 2, name: 'Bob'},
    {id: 3, name: 'Alice'},
  ];
  /**
   * ?? Encountered two children with the same key, `Alice`.
   *  Keys should be unique so that components maintain their identity across updates.
   *  Non-unique keys may cause children to be duplicated and/or omitted — the behavior is unsupported and could change in a future version.
   */
  return (
    <div>
      {people.map(person => {
        return (
          <div key={person.name}>
            <h2>{person.id}</h2>
            <h2>{person.name}</h2>
          </div>
        );
      })}
    </div>
  );
};
export default App;

上述代碼片段的問題在于,我們在每個對象上使用name屬性作為key屬性,但是name屬性在整個對象中不是獨一無二的。

index

解決該問題的一種方式是使用索引。它是傳遞給map方法的第二個參數(shù)。

const App = () => {
  const people = [
    {id: 1, name: 'Alice'},
    {id: 2, name: 'Bob'},
    {id: 3, name: 'Alice'},
  ];
  // ??? now using index for key
  return (
    <div>
      {people.map((person, index) => {
        return (
          <div key={index}>
            <h2>{person.id}</h2>
            <h2>{person.name}</h2>
          </div>
        );
      })}
    </div>
  );
};
export default App;

我們傳遞給Array.map方法的函數(shù)被調(diào)用,其中包含了數(shù)組中的每個元素和正在處理的當前元素的索引。

索引保證是唯一的,但是用它來做key屬性并不是一個最好的做法。因為它不穩(wěn)定,在渲染期間會發(fā)生變化。

唯一標識

更好的解決方案是,使用一個能唯一標識數(shù)組中每個元素的值。

在上面的例子中,我們可以使用對象上的id屬性,因為每個id屬性保證是唯一的。

// App.js
const App = () => {
  const people = [
    {id: 1, name: 'Alice'},
    {id: 2, name: 'Bob'},
    {id: 3, name: 'Alice'},
  ];
  // ? now using the id for the key prop
  return (
    <div>
      {people.map(person => {
        return (
          <div key={person.id}>
            <h2>{person.id}</h2>
            <h2>{person.name}</h2>
          </div>
        );
      })}
    </div>
  );
};
export default App;

使用id作為key屬性好多了。因為我們保證了對象id屬性為1時,name屬性總是等于Alice

React使用我們傳遞給key屬性的值是出于性能方面的考慮,以確保它只更新在渲染期間變化的列表元素。

當數(shù)組中每個元素都擁有獨一無二的key時,React會更容易確定哪些列表元素發(fā)生了變化。

你可以使用index作為key屬性。然而,這可能會導致React在幕后做更多的工作,而不是像獨一無二的id屬性那樣穩(wěn)定。

盡管如此,除非你在渲染有成千上萬個元素的數(shù)組,否則你很有可能不會注意到使用索引和唯一標識符之間有什么區(qū)別。

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

以上就是解決React報錯Encountered two children with the same key的詳細內(nèi)容,更多關(guān)于React報錯same key的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • react入門級詳細筆記

    react入門級詳細筆記

    這篇文章講述了React的基本介紹,基本使用和React相關(guān)js庫.通過這篇文章可以入門React的使用,可以快速上手使用React進行代碼的編寫
    2021-06-06
  • React實現(xiàn)基于Antd密碼強度校驗組件示例詳解

    React實現(xiàn)基于Antd密碼強度校驗組件示例詳解

    這篇文章主要為大家介紹了React實現(xiàn)基于Antd密碼強度校驗組件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • React18中的useDeferredValue示例詳解

    React18中的useDeferredValue示例詳解

    這篇文章主要介紹了React18中的useDeferredValue的相關(guān)知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • 詳解基于React.js和Node.js的SSR實現(xiàn)方案

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

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

    React實現(xiàn)todolist功能

    這篇文章主要介紹了React實現(xiàn)todolist功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • react中使用usestate踩坑及解決

    react中使用usestate踩坑及解決

    這篇文章主要介紹了react中使用usestate踩坑及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • React使用Ant Design方式(簡單使用)

    React使用Ant Design方式(簡單使用)

    文章介紹了AntDesign組件庫,它是基于AntDesign設計體系的ReactUI組件庫,主要用于研發(fā)企業(yè)級中后臺產(chǎn)品,文章詳細講解了如何下載和按需引入antd組件庫,并通過一個小案例展示了如何使用antd進行布局和改造,最后,文章提醒大家在使用過程中可以參考官網(wǎng)的屬性介紹
    2024-11-11
  • ReactRouter的實現(xiàn)方法

    ReactRouter的實現(xiàn)方法

    這篇文章主要介紹了ReactRouter的實現(xiàn),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • React useState超詳細講解用法

    React useState超詳細講解用法

    我正在處理的組件是表單的時間輸入。表單相對復雜,并且是動態(tài)生成的,根據(jù)嵌套在其他數(shù)據(jù)中的數(shù)據(jù)顯示不同的字段。我正在用useReducer管理表單的狀態(tài),到目前為止效果很好
    2022-11-11
  • React組件之間的通信的實例代碼

    React組件之間的通信的實例代碼

    本篇文章主要介紹了React組件間通信的實例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06

最新評論

阳西县| 嘉禾县| 荃湾区| 奉新县| 廉江市| 南召县| 仲巴县| 宜昌市| 社会| 红安县| 兴隆县| 锡林郭勒盟| 全州县| 盖州市| 长岭县| 漾濞| 玉树县| 普兰店市| 莱州市| 申扎县| 湛江市| 绍兴县| 盈江县| 宝丰县| 福州市| 通城县| 庆云县| 龙泉市| 台北市| 曲松县| 贺州市| 罗定市| 永修县| 台安县| 昭觉县| 张北县| 临泽县| 台北市| 花莲县| 新竹县| 达尔|