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

React中映射一個嵌套數(shù)組實現(xiàn)demo

 更新時間:2022年12月13日 10:32:36   作者:Jovie  
這篇文章主要為大家介紹了React中映射一個嵌套數(shù)組實現(xiàn)demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

正文

嵌套數(shù)組本質上是一個數(shù)組的數(shù)組,你可以把它們想象成一個表格,或者一個二維網(wǎng)格。為了映射一個嵌套數(shù)組,你可以使用平面和映射數(shù)組函數(shù)的組合,或者使用映射中的映射。

你可能想使用哪種方法取決于你的情況,所以我將用一個例子來解釋。如果你的數(shù)據(jù)只是一個一維數(shù)組,你可以簡單地使用一個普通的地圖,你可以通過這個教程查看。

平面+地圖

flat函數(shù)將我們的二維數(shù)組轉化為一維數(shù)組,然后我們可以簡單地將其映射到上面以產(chǎn)生我們的組件。在這個例子中,我創(chuàng)建了一個簡單的購物清單,并將一些物品按食物類別分組:

const shoppingCart = [
    ['apple', 'banana', 'cherry'],
    ['eggs', 'milk'],
    ['carrots', 'onions'],
];

這里是我們組件的代碼:

function ShoppingListItem({ item }) {
    return <li className="bg-neutral-800 p-2 font-normal shadow">{item}</li>;
}
function ShoppingList() {
    return (
        <div className="flex h-screen w-screen items-center justify-center">
            <div className="flex flex-col items-start justify-center rounded bg-neutral-800 p-8 text-3xl font-bold text-white shadow">
                <h1 className="w-full border-b-8 pb-2">Shopping List</h1>
                <ul>
                    {shoppingCart.flat().map((item) => (
                        <ShoppingListItem key={item} item={item} />
                    ))}
                </ul>
            </div>
        </div>
    );
}

這就是我們的頁面的樣子。

相關的物品被分組了,但為了顯示它們,我們只想得到一個物品的列表。這種方法是最簡單的方法,當你的數(shù)據(jù)被分組在一起并不重要時,這種方法很有用。代碼更短,但代價是簡化了我們的數(shù)據(jù)結構。另一個例子可能是像Instagram feed這樣的東西,你從不同的用戶那里得到帖子,然后把它們都放到一個feed中。

使用嵌套地圖

在很多情況下,你可能想保持你的嵌套數(shù)據(jù)的結構。在這個例子中,我們將重構我們的購物清單,把我們的食物組放在一起:

function ShoppingListItem({ item, white }) {
    return (
        <div
            key={item}
            className={ //Just to have striped rows
                'rounded p-5 ' +
                (white
                    ? 'bg-neutral-700 text-white'
                    : 'bg-neutral-100 text-black')
            }>
            {item}
        </div>
    );
}
function ShoppingListRow({ items, white }) {
    return (
        <li className="flex gap-2">
            {items.map((item) => (
                <ShoppingListItem key={item} item={item} white={white} />
            ))}
        </li>
    );
}
function ShoppingListGrouped() {
    return (
        <div className="flex h-screen w-screen items-center justify-center">
            <div className="flex flex-col items-start justify-center gap-8 rounded bg-neutral-800 p-8 text-3xl font-bold text-white shadow">
                <h1 className="w-full border-b-8 pb-2">Shopping List</h1>
                <ul className="flex flex-col gap-2">
                    {shoppingCart.map((row, i) => {
                        return (
                            <ShoppingListRow
                                key={row.join()}
                                items={row}
                                white={i % 2 === 0}
                            />
                        );
                    })}
                </ul>
            </div>
        </div>
    );
}

為了保持代碼的整潔,我把它分解為一個購物清單項目、一個購物清單行和整個購物清單的組件。我發(fā)現(xiàn)在這種情況下,這是一個非常好的方法,因為你可以從較小的、不太復雜的構件中建立起你的組件。有了這種方法,問題就從如何在一個地圖內(nèi)進行映射,變成了如何在一個數(shù)組上進行映射,并在兩種情況下進行。

下面是我們的更漂亮的購物清單的樣子。

現(xiàn)在,這些行不再是在一個大的列表中,而是被保存在不同的列表中,并使用了TailwindCSS的一些花哨的樣式,你可以在這里準備更多的東西。這種方法在很多情況下都很有用,比如表格、網(wǎng)格等等。我們也可以很容易地用兩個地圖來寫第一個例子,使用React Fragment,選擇權完全在你手中。

希望通過這兩個例子中的一個,你能夠在你的場景中通過一個嵌套數(shù)組進行映射,更多關于React映射嵌套數(shù)組的資料請關注腳本之家其它相關文章!

相關文章

  • React+TS+IntersectionObserver實現(xiàn)視頻懶加載和自動播放功能

    React+TS+IntersectionObserver實現(xiàn)視頻懶加載和自動播放功能

    通過本文的介紹,我們學習了如何使用 React + TypeScript 和 IntersectionObserver API 來實現(xiàn)一個視頻播放控制組件,該組件具有懶加載功能,只有在用戶滾動頁面且視頻進入視口時才開始下載視頻資源,需要的朋友可以參考下
    2023-04-04
  • react項目引入antd框架方式以及遇到的一些坑

    react項目引入antd框架方式以及遇到的一些坑

    這篇文章主要介紹了react項目引入antd框架方式以及遇到的一些坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • React狀態(tài)更新的優(yōu)先級機制源碼解析

    React狀態(tài)更新的優(yōu)先級機制源碼解析

    這篇文章主要為大家介紹了React狀態(tài)更新的優(yōu)先級機制源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • 基于React實現(xiàn)搜索GitHub用戶功能

    基于React實現(xiàn)搜索GitHub用戶功能

    在本篇博客中,我們將介紹如何在 React 應用中搜索 GitHub 用戶并顯示他們的信息,文中通過代碼示例給大家介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • React函數(shù)式組件Hook中的useState函數(shù)的詳細解析

    React函數(shù)式組件Hook中的useState函數(shù)的詳細解析

    Hook 就是 JavaScript 函數(shù),這個函數(shù)可以幫助你鉤入(hook into) React State以及生命周期等特性,這篇文章主要介紹了React Hook useState函數(shù)的詳細解析的相關資料,需要的朋友可以參考下
    2022-10-10
  • react-router-dom v6版本實現(xiàn)Tabs路由緩存切換功能

    react-router-dom v6版本實現(xiàn)Tabs路由緩存切換功能

    今天有人問我怎么實現(xiàn)React-Router-dom類似標簽頁緩存,很久以前用的是react-router v5那個比較容易實現(xiàn),v6變化挺大,但了解react的機制和react-router的機制就容易了,本文介紹react-router-dom v6版本實現(xiàn)Tabs路由緩存切換,感興趣的朋友一起看看吧
    2023-10-10
  • React 進入頁面后自動 focus 到某個輸入框的解決方案

    React 進入頁面后自動 focus 到某個輸入框的解決方案

    React.js 當中提供了 ref 屬性來幫助我們獲取已經(jīng)掛載的元素的 DOM 節(jié)點,你可以給某個 JSX 元素加上 ref屬性,這篇文章主要介紹了React 進入頁面以后自動 focus 到某個輸入框,需要的朋友可以參考下
    2024-02-02
  • react的ui庫antd中form表單使用SelectTree反顯問題及解決

    react的ui庫antd中form表單使用SelectTree反顯問題及解決

    這篇文章主要介紹了react的ui庫antd中form表單使用SelectTree反顯問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • ReactNative實現(xiàn)的橫向滑動條效果

    ReactNative實現(xiàn)的橫向滑動條效果

    本文介紹了ReactNative實現(xiàn)的橫向滑動條效果,本文結合示例代碼給大家介紹的非常詳細,補充介紹了ReactNative基于寬度變化實現(xiàn)的動畫效果,感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • React和Vue的props驗證示例詳解

    React和Vue的props驗證示例詳解

    這篇文章主要介紹了React和Vue的props驗證,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08

最新評論