AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

我們一起聊聊React列表渲染與Key

來源: 責編: 時間:2024-02-01 12:52:22 258觀看
導讀在React中,列表渲染是一種常見的模式,它允許我們基于數(shù)組的內(nèi)容動態(tài)生成React元素。同時,為了提高React的性能并確保正確的元素更新,我們需要為動態(tài)生成的元素添加唯一的 key 屬性。列表渲染列表渲染通常使用map函數(shù),它會

在React中,列表渲染是一種常見的模式,它允許我們基于數(shù)組的內(nèi)容動態(tài)生成React元素。同時,為了提高React的性能并確保正確的元素更新,我們需要為動態(tài)生成的元素添加唯一的 key 屬性。iBx28資訊網(wǎng)——每日最新資訊28at.com

列表渲染

列表渲染通常使用map函數(shù),它會遍歷數(shù)組中的每個元素,并返回一個新的React元素數(shù)組。JSX 允許在大括號中嵌入任何表達式,所以我們可以內(nèi)聯(lián) map() 返回的結果:iBx28資訊網(wǎng)——每日最新資訊28at.com

import React from 'react';function ListRendering() {  const items = ['Item 1', 'Item 2', 'Item 3'];  const itemList = items.map((item, index) => (    <li key={index}>{item}</li>  ));  return <ul>{itemList}</ul>;}export default ListRendering;

在上述例子中,items 是一個包含字符串的數(shù)組。通過map函數(shù),我們遍歷數(shù)組并為每個元素創(chuàng)建一個<li>元素。注意,每個<li>元素都有一個唯一的key屬性,通常使用元素的索引作為key。這有助于React在更新時更準確地識別每個元素。iBx28資訊網(wǎng)——每日最新資訊28at.com

添加 key 屬性的原因

  1. React的更新算法: React使用key屬性來優(yōu)化元素更新的過程。通過使用key,React能夠更有效地確定哪些元素被添加、刪除或修改,從而避免不必要的重新渲染。
  2. 幫助React識別元素: 每個React元素都應該有一個唯一的key,以便React能夠區(qū)分它們。這對于處理動態(tài)列表、排序或篩選等操作非常重要。

使用元素屬性作為 key 的注意事項

你可能會想直接把數(shù)組項的索引當作 key 值來用,實際上,如果你沒有顯式地指定 key 值,React 確實默認會這么做。但是數(shù)組項的順序在插入、刪除或者重新排序等操作中會發(fā)生改變,此時把索引順序用作 key 值會產(chǎn)生一些微妙且令人困惑的 bug。iBx28資訊網(wǎng)——每日最新資訊28at.com

與之類似,請不要在運行過程中動態(tài)地產(chǎn)生 key,像是 key={Math.random()} 這種方式。這會導致每次重新渲染后的 key 值都不一樣,從而使得所有的組件和 DOM 元素每次都要重新創(chuàng)建。這不僅會造成運行變慢的問題,更有可能導致用戶輸入的丟失。所以,使用能從給定數(shù)據(jù)中穩(wěn)定取得的值才是明智的選擇。iBx28資訊網(wǎng)——每日最新資訊28at.com

有一點需要注意,組件不會把 key 當作 props 的一部分。Key 的存在只對 React 本身起到提示作用。iBx28資訊網(wǎng)——每日最新資訊28at.com

所以在使用元素屬性作為key時,需要確保該屬性在列表中是唯一且穩(wěn)定的。不推薦使用索引作為唯一的key,因為它可能導致一些問題,尤其是在動態(tài)操作數(shù)組時。iBx28資訊網(wǎng)——每日最新資訊28at.com

// 不推薦const itemList = items.map((item, index) => (  <li key={index}>{item}</li>));

最好的做法是使用每個元素的唯一標識符作為key,例如元素在數(shù)據(jù)中的ID。iBx28資訊網(wǎng)——每日最新資訊28at.com

const itemsWithId = [  { id: 1, text: 'Item 1' },  { id: 2, text: 'Item 2' },  { id: 3, text: 'Item 3' },];const itemList = itemsWithId.map((item) => (  <li key={item.id}>{item.text}</li>));

沒有穩(wěn)定的 ID 的情況

如果數(shù)據(jù)中沒有唯一且穩(wěn)定的ID,你可以使用一些哈希函數(shù)或庫來生成一個穩(wěn)定的ID,確保在數(shù)據(jù)變化時仍然能夠提供唯一的key。iBx28資訊網(wǎng)——每日最新資訊28at.com

import { v4 as uuidv4 } from 'uuid';const items = ['Item 1', 'Item 2', 'Item 3'];const itemList = items.map((item) => (  <li key={uuidv4()}>{item}</li>));

在這個例子中,我們使用了uuid庫來生成一個唯一的ID作為key。iBx28資訊網(wǎng)——每日最新資訊28at.com

總之,列表渲染是React中常見的模式,使用key屬性可以確保React在處理動態(tài)列表時更加高效和準確。iBx28資訊網(wǎng)——每日最新資訊28at.com

馬上一練

數(shù)組生成菜譜列表,其中每個菜譜,都用iBx28資訊網(wǎng)——每日最新資訊28at.com

來顯示它的名稱,并在里列出它所需的原料。export const recipes = [  {    id: 'greek-salad',    name: '希臘沙拉',    ingredients: ['西紅柿', '黃瓜', '洋蔥', '油橄欖', '羊奶酪'],  },  {    id: 'hawaiian-pizza',    name: '夏威夷披薩',    ingredients: ['披薩餅皮', '披薩醬', '馬蘇里拉奶酪', '火腿', '菠蘿'],  },  {    id: 'hummus',    name: '鷹嘴豆泥',    ingredients: ['鷹嘴豆', '橄欖油', '蒜瓣', '檸檬', '芝麻醬'],  },];export default function RecipeList() {  return (    <div>      <h1>菜譜</h1>      {recipes.map(recipe =>        <div key={recipe.id}>          <h2>{recipe.name}</h2>          <ul>            {recipe.ingredients.map(ingredient =>              <li key={ingredient}>                {ingredient}              </li>            )}          </ul>        </div>      )}    </div>  );}

iBx28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-70484-0.html我們一起聊聊React列表渲染與Key

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 故障現(xiàn)場 | 這個死鎖出奇的詭異

下一篇: CSS問題:推薦幾個超好看漸變色!項目中可用

標簽:
  • 熱門焦點
  • Rust中的高吞吐量流處理

    作者 | Noz編譯 | 王瑞平本篇文章主要介紹了Rust中流處理的概念、方法和優(yōu)化。作者不僅介紹了流處理的基本概念以及Rust中常用的流處理庫,還使用這些庫實現(xiàn)了一個流處理程序
  • 量化指標是與非:挽救被量化指標扼殺的技術團隊

    作者 | 劉新翠整理 | 徐杰承本文整理自快狗打車技術總監(jiān)劉新翠在WOT2023大會上的主題分享,更多精彩內(nèi)容及現(xiàn)場PPT,請關注51CTO技術棧公眾號,發(fā)消息【W(wǎng)OT2023PPT】即可直接領取
  • 三言兩語說透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是兩種很有用的技術,可以幫助我們寫出更加優(yōu)雅、泛用的函數(shù)。本文將首先介紹柯里化和反柯里化的概念、實現(xiàn)原理和應用
  • 虛擬鍵盤 API 的妙用

    你是否在遇到過這樣的問題:移動設備上有一個固定元素,當激活虛擬鍵盤時,該元素被隱藏在了鍵盤下方?多年來,這一直是 Web 上的默認行為,在本文中,我們將探討這個問題、為什么會發(fā)生
  • 阿里大調(diào)整

    來源:產(chǎn)品劉有媒體報道稱,近期淘寶天貓集團啟動了近年來最大的人力制度改革,涉及員工績效、層級體系等多個核心事項,目前已形成一個初步的&ldquo;征求意見版&rdquo;:1、取消P序列
  • 國行版三星Galaxy Z Fold5/Z Flip5發(fā)布 售價7499元起

    2023年8月3日,三星電子舉行Galaxy新品中國發(fā)布會,正式在國內(nèi)推出了新一代折疊屏智能手機三星Galaxy Z Fold5與Galaxy Z Flip5,以及三星Galaxy Tab S9
  • 超級標準版旗艦!iQOO 11S全球首發(fā)iQOO超算獨顯芯片

    上半年已接近尾聲,截至目前各大品牌旗下的頂級旗艦都已悉數(shù)亮相,而下半年即將推出的頂級旗艦已經(jīng)成為了數(shù)碼圈爆料的主流,其中就包括全新的iQOO 11S系
  • onebot M24巧系列一體機采用輕薄機身設計,現(xiàn)已在各平臺開售

    onebot M24 巧系列一體機目前已在線上線下各平臺同步開售。onebot M24 巧系列采用一體化輕薄機身設計,最薄處為 10.15mm,擁有寶石紅、午夜藍、石墨綠、雅致
  • 中關村論壇11月25日開幕,15位諾獎級大咖將發(fā)表演講

    11月18日,記者從2022中關村論壇新聞發(fā)布會上獲悉,中關村論壇將于11月25至30日在京舉行。本屆中關村論壇由科學技術部、國家發(fā)展改革委、工業(yè)和信息化部、國務
Top