[英]React : TypeError: items.map is not a function
我收到此错误TypeError: items.map is not a function在反应中使用 get unique function。 请任何人都可以帮助我。 谢谢
import React from 'react';
import Hero from "../components/Hero";
import Banner from "../components/Banner";
import {Link} from 'react-router-dom';
import RoomContainer from "../components/RoomContainer";
const getUnique = (items,value)=>{
return [...new Set(items.map(item => item[value]))];
};
function RoomFilter(rooms) {
const context = useContext(RoomContext);
const { handleChange, type } = context;
//get unique types
let types = getUnique(rooms, 'type');
//add all
types = ['all', ...types];
//map to jsx
types = types.map((item, index) => {
return (
<option value={item} key={index}>
{item}
</option>
);
});
return (
<section className="filter-container">
<Title title="search rooms" />
<form className="filter-form">
<div className="form-group">
<label htmlFor="type">Room Type</label>
<select name="type" id="type" value={type} className="form-control" onChange={handleChange}>{types}</select>
</div>
</form>
</section>
);
}
export default RoomFilter;
react 功能组件的第一个参数是它的props
。
但是,您的代码正在描述道具的属性。
function RoomFilter(rooms) {
您可以通过在参数中或稍后作为 const 进行解构来解决此问题。
function RoomFilter({ rooms }) {
或者
function RoomFilter(props) {
const { rooms } = props;
问题是你传入了getUnique
function 参数rooms
,它不是一个数组。 您需要检查将此属性传递给RoomFilter
的位置。 在大多数情况下,它与一些 state 变量的起始值未定义而不是[]相关(在这种情况下如何)。 但是,如果您需要更多帮助,您应该显示更多代码:)
Item.map is not a function because you are trying to fill a new Set() with values and a set.add(value) takes a function which returns a object that can return a value to be added with add(value).
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.