React報(bào)錯(cuò)map()?is?not?a?function詳析
總覽
當(dāng)我們對(duì)一個(gè)不是數(shù)組的值調(diào)用map()方法時(shí),就會(huì)產(chǎn)生"TypeError: map is not a function"錯(cuò)誤。為了解決該錯(cuò)誤,請(qǐng)將你調(diào)用map()方法的值記錄在console.log上,并確保只對(duì)有效的數(shù)組調(diào)用map。

這里有個(gè)示例來展示錯(cuò)誤是如何發(fā)生的。
const App = () => {
const obj = {};
// ?? Uncaught TypeError: map is not a function
return (
<div>
{obj.map(element => {
return <h2>{element}</h2>;
})}
</div>
);
};
export default App;我們?cè)谝粋€(gè)對(duì)象上調(diào)用Array.map()方法,得到了錯(cuò)誤反饋。
為了解決該錯(cuò)誤,請(qǐng)console.log你調(diào)用map方法的值,確保它是一個(gè)有效的數(shù)組。
export default function App() {
const arr = ['one', 'two', 'three'];
return (
<div>
{arr.map((element, index) => {
return (
<div key={index}>
<h2>{element}</h2>
</div>
);
})}
</div>
);
}Array.isArray
你可以通過使用Array.isArray方法,來有條件地檢查值是否為數(shù)組。
const App = () => {
const obj = {};
return (
<div>
{Array.isArray(obj)
? obj.map(element => {
return <h2>{element}</h2>;
})
: null}
</div>
);
};
export default App;如果值為數(shù)組,則返回對(duì)其調(diào)用map方法的結(jié)果,否則返回null。這種方式不會(huì)得到錯(cuò)誤,即使值不是一個(gè)數(shù)組。
如果值是從遠(yuǎn)程服務(wù)中獲取,請(qǐng)確保它是你期望的類型,將其記錄到控制臺(tái),并確保你在調(diào)用
map方法之前將其解析為一個(gè)原生JavaScript數(shù)組。
Array.from
如果有一個(gè)類數(shù)組對(duì)象,在調(diào)用map方法之前你嘗試轉(zhuǎn)換為數(shù)組,可以使用Array.from()方法。
const App = () => {
const set = new Set(['one', 'two', 'three']);
return (
<div>
{Array.from(set).map(element => {
return (
<div key={element}>
<h2>{element}</h2>
</div>
);
})}
</div>
);
};
export default App;在調(diào)用map方法之前,我們將值轉(zhuǎn)換為數(shù)組。這也適用于類數(shù)組的對(duì)象,比如調(diào)用getElementsByClassName方法返回的NodeList。
Object.keys
如果你嘗試迭代遍歷對(duì)象,使用Object.keys()方法獲取對(duì)象的鍵組成的數(shù)組,在該數(shù)組上可以調(diào)用map()方法。
export default function App() {
const employee = {
id: 1,
name: 'Alice',
salary: 100,
};
return (
<div>
{/* ??? iterate object KEYS */}
{Object.keys(employee).map((key) => {
return (
<div key={key}>
<h2>
{key}: {employee[key]}
</h2>
<hr />
</div>
);
})}
<br />
<br />
<br />
{/* ??? iterate object VALUES */}
{Object.values(employee).map((value, index) => {
return (
<div key={index}>
<h2>{value}</h2>
<hr />
</div>
);
})}
</div>
);
}我們使用Object.keys方法得到對(duì)象的鍵組成的數(shù)組。
const employee = {
id: 1,
name: 'Alice',
salary: 100,
};
// ??? ['id', 'name', 'salary']
console.log(Object.keys(employee));
// ??? [1, 'Alice', 100]
console.log(Object.values(employee));我們只能在數(shù)組上調(diào)用map()方法,所以我們需要獲得一個(gè)對(duì)象的鍵或者對(duì)象的值的數(shù)組。
到此這篇關(guān)于React報(bào)錯(cuò)map() is not a function詳析的文章就介紹到這了,更多相關(guān)React map is not a function內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一文詳解React中如何實(shí)現(xiàn)組件懶加載
懶加載是一種優(yōu)化技術(shù),旨在延遲加載不必要的資源,直到它們真正需要時(shí)再進(jìn)行加載,那么React的懶加載是如何實(shí)現(xiàn)的呢,下面小編就來和大家詳細(xì)講講吧2025-03-03
React中實(shí)現(xiàn)父組件調(diào)用子組件的三種方法
在React中,組件之間的通信是一個(gè)常見的需求,有時(shí),我們需要從父組件調(diào)用子組件的方法,這可以通過幾種不同的方式實(shí)現(xiàn),需要的朋友可以參考下2024-04-04
基于visual studio code + react 開發(fā)環(huán)境搭建過程
今天通過本文給大家分享基于visual studio code + react 開發(fā)環(huán)境搭建過程,本文給大家介紹的非常詳細(xì),包括react安裝問題及安裝 Debugger for Chrome的方法,需要的朋友跟隨小編一起看看吧2021-07-07
詳解在React.js中使用PureComponent的重要性和使用方式
這篇文章主要介紹了詳解在React.js中使用PureComponent的重要性和使用方式,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-07-07
React中使用ResizeObserver來觀察元素size變化的方法
在 React 中使用 ResizeObserver 來觀察元素的大小變化,可以通過創(chuàng)建一個(gè)自定義 Hook 來封裝 ResizeObserver 的邏輯,并在組件中使用這個(gè) Hook,以下是一個(gè)完整的示例,展示了如何在 React 中使用 ResizeObserver 來觀察元素的大小變化,需要的朋友可以參考下2024-12-12
React Router中Link和NavLink的學(xué)習(xí)心得總結(jié)
這篇文章主要介紹了React Router中Link和NavLink的學(xué)習(xí)心得總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
關(guān)于React中使用window.print()出現(xiàn)頁面無響應(yīng)問題解決記錄
這篇文章主要介紹了React中使用window.print()出現(xiàn)頁面無響應(yīng)問題解決記錄,首先問題原因可能是操作了document但是并未進(jìn)行銷毀(可能是),具體問題解決思路參考下本文吧2021-11-11

