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

這里有個示例來展示錯誤是如何發(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;我們在一個對象上調(diào)用Array.map()方法,得到了錯誤反饋。
為了解決該錯誤,請console.log你調(diào)用map方法的值,確保它是一個有效的數(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ù)組,則返回對其調(diào)用map方法的結(jié)果,否則返回null。這種方式不會得到錯誤,即使值不是一個數(shù)組。
如果值是從遠程服務中獲取,請確保它是你期望的類型,將其記錄到控制臺,并確保你在調(diào)用
map方法之前將其解析為一個原生JavaScript數(shù)組。
Array.from
如果有一個類數(shù)組對象,在調(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ù)組的對象,比如調(diào)用getElementsByClassName方法返回的NodeList。
Object.keys
如果你嘗試迭代遍歷對象,使用Object.keys()方法獲取對象的鍵組成的數(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方法得到對象的鍵組成的數(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()方法,所以我們需要獲得一個對象的鍵或者對象的值的數(shù)組。
到此這篇關(guān)于React報錯map() is not a function詳析的文章就介紹到這了,更多相關(guān)React map is not a function內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解如何使用React和MUI創(chuàng)建多選Checkbox樹組件
這篇文章主要為大家詳細介紹了如何使用 React 和 MUI(Material-UI)庫來創(chuàng)建一個多選 Checkbox 樹組件,該組件可以用于展示樹形結(jié)構(gòu)的數(shù)據(jù),并允許用戶選擇多個節(jié)點,感興趣的可以了解下2024-01-01
React中的路由嵌套和手動實現(xiàn)路由跳轉(zhuǎn)的方式詳解
這篇文章主要介紹了React中的路由嵌套和手動實現(xiàn)路由跳轉(zhuǎn)的方式,手動路由的跳轉(zhuǎn),主要是通過Link或者NavLink進行跳轉(zhuǎn)的,實際上我們也可以通JavaScript代碼進行跳轉(zhuǎn),需要的朋友可以參考下2022-11-11
在 React 中使用 Redux 解決的問題小結(jié)
在 React 中組件通信的數(shù)據(jù)流是單向的,頂層組件可以通過 props 屬性向下層組件傳遞數(shù)據(jù),而下層組件不能直接向上層組件傳遞數(shù)據(jù),這篇文章主要介紹了使用react+redux實現(xiàn)彈出框案例,需要的朋友可以參考下2022-10-10
使用react在修改state中的數(shù)組和對象數(shù)據(jù)的時候(setState)
這篇文章主要介紹了使用react在修改state中的數(shù)組和對象數(shù)據(jù)的時候(setState),具有很好的參考價值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09
React報錯Element type is invalid解決案例
這篇文章主要為大家介紹了React報錯Element type is invalid解決案例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12
create-react-app構(gòu)建項目慢的解決方法
這篇文章主要介紹了create-react-app構(gòu)建項目慢的解決方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03

