JavaScript >> Javascript 文檔 >  >> React

反應arrayMap utils

你好 React 開發者,

我創建了一個名為 reactMap 和 arrMap 的實用程序函數。你可以利用它。請在下面找到隨附的代碼

import React from 'react';

export function reactMap(arr, ifFn, elseFn) {
  if (!arr || !Array.isArray(arr) || arr.length === 0) {
    if (elseFn) {
      if (typeof elseFn === 'function') return elseFn();
      else return elseFn;
    } else return false;
  } else {
    if (ifFn) {
      if (typeof ifFn === 'function') {
        return React.Children.toArray(arr.map(ifFn));
      } else return React.Children.toArray(arr.map(() => ifFn));
    } else if (elseFn) return false;
    else return true;
  }
}

export function arrMap(arr, ifFn, elseFn) {
  if (!arr || !Array.isArray(arr) || arr.length === 0) {
    if (elseFn) {
      if (typeof elseFn === 'function') {
        const result = elseFn();
        if (result && Array.isArray(result)) return result;
      } else {
        if (elseFn && Array.isArray(elseFn)) return elseFn;
      }
    }
  } else {
    if (ifFn) {
      if (typeof ifFn === 'function') {
        return arr.reduce((acc, item, i) => {
          const value = ifFn(item, i, arr);
          if (value === false || value === undefined) return acc;
          else return [...acc, value];
        }, []);
      } else return arr.map(() => ifFn);
    } else if (!elseFn) return arr;
  }
  return [];
}

下面是片段供您了解使用方法,以及您可以使用的新結構替換舊結構。

這是舊結構

const arr = [1,2,3,4,5];

{arr && Array.isArray(arr) && arr.map(val=>
    <div key={val}>{val}</div>
)}

{arr && Array.isArray(arr) && arr.length===0 &&
    <div>No data to show</div>
}

{arr && Array.isArray(arr) && arr.length!==0 &&
    <div>arr has content</div>
}

這是新結構

import { reactMap } from 'utils/reactMapUtils';

const arr = [1,2,3,4,5];

{reactMap(arr, val => <div>{val}</div>, <div>No data to show</div>)}

{reactMap(arr) && <div>arr has content</div>}

通過使用上述結構,我們具有以下列出的優點。

  1. 不再需要空檢查。
  2. 我們不再需要傳遞 key 屬性了。
  3. 我們也不必再單獨編寫數組空條件了。
  4. 不必檢查arr是否包含數據。

arrMap 功能類似於 reactMap 但 arrMap 總是返回一個數組。它在我們想要操作數組內容時很有用


Tutorial JavaScript 教程
  1. 讓我們編寫一個流暢的 API(簡而言之)

  2. 從 Vanilla JS 到 Vue.js:Vue 要點指南

  3. 通過超級簡單的步驟開始使用 React。

  4. 如何思考 JavaScript 關鍵字 this

  5. V8 發布 v8.7

  6. VUE的一個點和一個實例。

  7. 使用 React 的微前端

  1. 遞歸生成器以及如何使用它們不消耗所有內存

  2. 使用 Vanilla JavaScript 實現簡單的 SPA 路由

  3. 如何在 Flutter 中打開或關閉鍵盤

  4. 為什麼我停止在 React 組件上傳播 props

  5. VSCode 中的自定義代碼片段

  6. 限制並發異步調用

  7. MailChimp API、Netlify 和無服務器函數

  1. 30+ 最好的引導管理模板免費🤩和高級版 2022💥

  2. 美化你的延誤

  3. 發布你自己的 NPM 包🎉

  4. 單筆銷售的最佳利潤