반응 arrayMap 유틸리티
2879 단어 javascriptopensourcereactwebdev
reactMap이라는 유틸리티 함수를 만들었습니다. 당신은 그것을 사용할 수 있습니다. 아래 첨부된 코드를 찾아주세요
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 [];
}
아래는 사용 방법을 알 수 있는 스니펫과 이전 구조로 대체하여 사용할 수 있는 새 구조입니다.
import { reactMap } from 'utils/reactMapUtils';
const arr = [1,2,3,4,5];
//you can replace the lines 4 to 9 with only one line, which is line 11.
{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>
}
// --------------------------------------------------------------------------------------
{reactMap(arr, val => <div>{val}</div>, <div>No data to show</div>)}
//by using the above structure, we have the advantages that are listed below.
//1. No more null check is required.
//2. We don't have to pass the key prop anymore.
//3. We don't have to to write array empty condition seperatly anymore too.
// Also, the lines 17 to 19 can be written as line 22
{arr && Array.isArray(arr) && arr.length!==0 &&
<div>arr has content</div>
}
// ----------------------------------------------------------------------------------------
{reactMap(arr) && <div>arr has content</div>}
//Below are the advantages of the structure on the line 22
//1. No more null checks needed anymore.
//3. Don't have to check whether the arr contains data or no.
Reference
이 문제에 관하여(반응 arrayMap 유틸리티), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/yathink3/react-arraymap-utils-32ik텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)