【问题标题】:React : TypeError: items.map is not a function反应:TypeError:items.map 不是函数
【发布时间】:2020-04-25 20:07:47
【问题描述】:

我在反应中使用 get unique 函数时收到此错误TypeError: items.map is not a 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;

【问题讨论】:

  • const getUnique = (items,value)=>{ return [...new Set(items.map(item => (item[value])))]; };函数 RoomFilter(rooms) { const context = useContext(RoomContext); const { handleChange,type,capacity,price,minPrice,maxPrice,minSize,maxSize,breakfast, pets} = context;让类型= getUnique(房间,“类型”);类型= [“所有”,...类型]; //映射到jsx types = types.map((item, index)=>{ return ( ); });这是我的代码
  • 这只是意味着rooms 不是一个有效的列表。如果您重新格式化您的代码并显示更多内容,我们将更容易提供帮助。不要将代码粘贴到评论中。
  • 感谢您的回复。我已经上传了代码。请看好它
  • 我已经上传了我的“RoomFilter”完整代码。请检查一下。

标签: javascript reactjs unique


【解决方案1】:

react 函数组件的第一个参数是 props

但是您的代码描述的是 props 的属性。

function RoomFilter(rooms) {

您可以通过在参数中或稍后作为 const 进行解构来解决此问题。

function RoomFilter({ rooms }) {

function RoomFilter(props) {
  const { rooms } = props;

【讨论】:

  • 非常感谢您的帮助。现在它工作正常:)
【解决方案2】:

问题是你传入了getUnique 函数参数rooms,这不是一个数组。您需要检查将此属性传递给RoomFilter 的位置。在大多数情况下,它与某些状态变量的起始值是 undefined 而不是 [] 相关(在这种情况下如何)。但是,如果您需要更多帮助,您应该显示更多代码 :)

【讨论】:

  • 我已经上传了我的“RoomFilter”完整代码。请检查一下
【解决方案3】:

Item.map 不是一个函数,因为您试图用值填充a new Set(),而 set.add(value) 采用一个函数,该函数返回一个对象,该对象可以返回一个要与 add(value) 相加的值。

【讨论】:

    猜你喜欢
    • 2020-10-12
    • 2019-07-31
    • 2021-01-04
    • 2017-01-28
    • 2019-08-03
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多