React?中在?map()?中使用條件跳出map的方法
React 中在 map() 中使用條件:
- 在數(shù)組上調(diào)用
map()方法。 - 使用
if條件,如果條件滿足則顯式返回。 - 否則返回不同的值或返回
null以不呈現(xiàn)任何內(nèi)容。
export default function App() {
const arr = [1, 2, 3, 4, 5, 6];
return (
<div>
{arr.map((element, index) => {
if (element % 2 === 0) {
return <h2 key={index}>{element}</h2>;
}
return <h2 key={index}>X</h2>;
})}
</div>
);
}我們使用 Array.map 方法迭代一個數(shù)組。
我們傳遞給
map()的函數(shù)將使用數(shù)組中的每個元素和當前迭代的索引進行調(diào)用。
在每次迭代中,我們檢查元素是否可以被 2 整除,如果是,我們返回該元素,否則,我們返回 X。
如果您不需要渲染任何東西,則返回 null
如果你不想在 else 子句中渲染任何東西,你可以返回 null。
export default function App() {
const arr = [1, 2, 3, 4, 5, 6];
return (
<div>
{arr.map((element, index) => {
if (element % 2 === 0) {
return <h2 key={index}>{element}</h2>;
}
// ??? render nothing
return null;
})}
</div>
);
}該示例呈現(xiàn)可被 2 整除的數(shù)字,否則不呈現(xiàn)任何內(nèi)容。
或者,我們可以使用三元運算符。
使用三元運算符在 map() 中使用條件
這是一個三步過程:
- 在數(shù)組上調(diào)用
map()方法。 - 使用三元運算符檢查條件是否為真。
- 如果條件為真,運算符返回冒號左邊的值,否則返回右邊的值。
export default function App() {
const arr = [1, 2, 3, 4, 5, 6];
return (
<div>
{arr.map((element, index) => {
return element % 2 === 0 ? (
<h2 key={index}>{element}</h2>
) : (
<h2 key={index}>X</h2>
);
})}
</div>
);
}我們使用了與 if/else 語句非常相似的條件三元運算符。
如果問號前的表達式求值為真值,則返回冒號左側(cè)的值,否則返回冒號右側(cè)的值。
換句話說,如果元素可以被 2 整除,我們返回元素,否則返回 X。
和前面的例子一樣,如果你想在 else 子句中什么都不返回,你就必須返回 null。
export default function App() {
const arr = [1, 2, 3, 4, 5, 6];
return (
<div>
{arr.map((element, index) => {
return element % 2 === 0 ? <h2 key={index}>{element}</h2> : null;
})}
</div>
);
}我們在示例中使用了 key prop 的索引,但是,如果有的話,最好使用一個穩(wěn)定的唯一標識符。
出于性能原因,React 在內(nèi)部使用 key 道具。 它幫助庫確保只重新呈現(xiàn)已更改的數(shù)組元素。
話雖如此,除非您處理成千上萬的數(shù)組元素,否則您不會看到任何明顯的差異。
在 React 中打破 map() 循環(huán)(map() 只是數(shù)組的一部分)
要跳出 map() 循環(huán):
- 對數(shù)組調(diào)用 slice() 方法以獲取數(shù)組的一部分。
- 對數(shù)組的一部分調(diào)用 map() 方法。
- 遍歷數(shù)組的一部分。
export default function App() {
const employees = [
{id: 1, name: 'Alice', country: 'Austria'},
{id: 2, name: 'Zadmei', country: 'China'},
{id: 3, name: 'Carl', country: 'Canada'},
{id: 4, name: 'Delilah', country: 'Denmark'},
{id: 5, name: 'Ethan', country: 'Egypt'},
];
// ??? map() first 2 elements of array
return (
<div>
{employees.slice(0, 2).map((employee, index) => {
return (
<div key={index}>
<h2>name: {employee.name}</h2>
<h2>country: {employee.country}</h2>
<hr />
</div>
);
})}
</div>
);
}Array.slice 方法不會修改原始數(shù)組,而是創(chuàng)建一個新數(shù)組(原始數(shù)組的淺表副本)。
我們將以下 2 個參數(shù)傳遞給 slice() 方法:
- startIndex 要包含在新數(shù)組中的第一個元素的索引
- endIndex 上去,但不包括這個索引
我們指定起始索引為 0,結(jié)束索引為 2,因此我們得到了包含元素 0 和 1 的數(shù)組的一部分。
即使我們提供給 Array.slice 方法的結(jié)束索引超過了數(shù)組的長度,該方法也不會拋出錯誤而是返回所有數(shù)組元素。
const arr = ['a', 'b', 'c']; const first100 = arr.slice(0, 100); console.log(first100); // ??? ['a', 'b', 'c']
我們試圖獲取一個數(shù)組的前 100 個元素,它只包含 3 個元素。
結(jié)果,新數(shù)組包含原始數(shù)組的所有 3 個元素。
Map() 只是數(shù)組的一部分,使用 filter()
我們還可以在調(diào)用 map() 之前使用 Array.filter 方法。
export default function App() {
const employees = [
{id: 1, name: 'Alice', country: 'Austria'},
{id: 2, name: 'Zadmei', country: 'China'},
{id: 3, name: 'Carl', country: 'Canada'},
{id: 4, name: 'Delilah', country: 'Denmark'},
{id: 5, name: 'Ethan', country: 'Egypt'},
];
// ??? map() LAST 2 elements of array
return (
<div>
{employees
.filter(employee => {
return (
employee.country === 'Belgium' || employee.country === 'Denmark'
);
})
.map((employee, index) => {
return (
<div key={index}>
<h2>name: {employee.name}</h2>
<h2>country: {employee.country}</h2>
<hr />
</div>
);
})}
</div>
);
}我們傳遞給 filter() 方法的函數(shù)會針對數(shù)組中的每個元素進行調(diào)用。
在每次迭代中,我們檢查當前對象是否具有等于比利時或丹麥的國家/地區(qū)屬性并返回結(jié)果。
filter()方法返回一個僅包含回調(diào)函數(shù)返回真值的元素的數(shù)組。
在示例中,僅使用 id 為 2 和 4 的對象調(diào)用 map() 方法。
到此這篇關(guān)于React 中在 map() 中使用條件跳出map的文章就介紹到這了,更多相關(guān)React 在 map() 中使用條件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
React庫之react-beautiful-dnd介紹及其使用過程
在使用React構(gòu)建Web應(yīng)用程序時,拖拽功能是一項常見需求,為了方便實現(xiàn)拖拽功能,我們可以借助第三方庫react-beautiful-dnd,本文將介紹react-beautiful-dnd的基本概念,并結(jié)合實際的項目代碼一步步詳細介紹其使用過程,需要的朋友可以參考下2023-11-11
React中實現(xiàn)組件通信的幾種方式小結(jié)
在構(gòu)建復(fù)雜的React應(yīng)用時,組件之間的通信是至關(guān)重要的,從簡單的父子組件通信到跨組件狀態(tài)同步,不同組件之間的通信方式多種多樣,下面我們認識react組件通信的幾種方式,需要的朋友可以參考下2024-04-04
利用React Router4實現(xiàn)的服務(wù)端直出渲染(SSR)
這篇文章主要介紹了利用React Router4實現(xiàn)的服務(wù)端直出渲染(SSR),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01
React Native中實現(xiàn)動態(tài)導入的示例代碼
隨著業(yè)務(wù)的發(fā)展,每一個 React Native 應(yīng)用的代碼數(shù)量都在不斷增加。作為一個前端想到的方案自然就是動態(tài)導入(Dynamic import)了,本文介紹了React Native中實現(xiàn)動態(tài)導入的示例代碼,需要的可以參考一下2022-06-06
使用React-Router實現(xiàn)前端路由鑒權(quán)的示例代碼
這篇文章主要介紹了使用React-Router實現(xiàn)前端路由鑒權(quán)的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07
React中完整實例講解Recoil狀態(tài)管理庫的使用
這篇文章主要介紹了React中Recoil狀態(tài)管理庫的使用,Recoil的產(chǎn)生源于Facebook內(nèi)部一個可視化數(shù)據(jù)分析相關(guān)的應(yīng)用,在使用React的實現(xiàn)的過程中,因為現(xiàn)有狀態(tài)管理工具不能很好的滿足應(yīng)用的需求,因此催生出了Recoil,對Recoil感興趣可以參考下文2023-05-05

