为了账号安全,请及时绑定邮箱和手机立即绑定

TypeError: props.items.map 不是函数

TypeError: props.items.map 不是函数

繁花不似锦 2023-03-03 15:22:34
无论我做什么,我都会不断收到同样的错误。请给我最简单的解决方案。import { Component } from "react";import React from "react";const NewsItem = (props) => {  //   console.log(props.item);    const item = props.items.map((e) => {      return e.id;    });  console.log(props.items);  // console.log(props.items.title)  return <div>{item}</div>;};
查看完整描述

4 回答

?
达令说

TA贡献1821条经验 获得超6个赞

import { Component } from "react";

import React from "react";


const NewsItem = ({ items = [], ...props }) => {

  //   console.log(props.item);

    const item = items.map((e) => {

      return e.id;

    });

  console.log(items);

  // console.log(props.items.title)

  return <div>{item}</div>;

};

显然你的错误是在这个组件的调用者中,上面的代码片段将用空数组替换你的道具中的任何未定义值。要修复错误,您需要修复调用者或处理项目不是数组的事实,例如:


import { Component } from "react";

import React from "react";


const NewsItem = ({ items = [], ...props }) => {

 

    if (!Array.isArray(items)) return <span>No items found</span>;

    const item = items.map((e) => {

      return e.id;

    });

  console.log(items);

  // console.log(props.items.title)

  return <div>{item}</div>;

};


查看完整回答
反对 回复 2023-03-03
?
当年话下

TA贡献1890条经验 获得超9个赞

尝试使用 React PropTypesitem在其中为道具使用所需的架构定义。这将帮助编译器识别 prop 的类型。

ComponentName.propTypes = {
  items: PropTypes.arrayOf(arrayOf)
};


查看完整回答
反对 回复 2023-03-03
?
慕斯王

TA贡献1864条经验 获得超2个赞

const NewsItem = ({ items = [] }) => {

    const itemsList = items.map((item) => item.id);

    return <div> { itemsList.join(', ') } </div>;

};


查看完整回答
反对 回复 2023-03-03
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

您收到此错误是因为当您渲染NewsItem道具时items未提供或它提供的值不是数组。为避免这种情况,您可以利用propTypesitems并在渲染组件时指定道具的默认值NewsItem而不传递道具项目。

const NewsItem = (props) => {

    // other code goes here

    return <div></div>

}


NewsItem.defaultProps = {

    items: []

}


查看完整回答
反对 回复 2023-03-03
  • 4 回答
  • 0 关注
  • 132 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号