开发者问题收集

为什么它一直说用户未定义?

2019-09-18
621

我正在编写一个函数,该函数调用一个 prop,该 prop 调用数组中的对象,但它一直抛出此错误:

TypeError: undefined is not a function (near '...robots.map...')

我假设它谈论的是用户,但我不知道。任何帮助都将不胜感激,这是我的代码

此文件 CardList.js 上抛出了错误

import React from 'react';
    import Card from './Card';

    const CardList = ({ robots }) =>{
    //the line under this is the one throwing the error
      const cardComponent = robots.map((user, i)=>{ 
        return <Card id={robots[i].id} name={robots[i].name} email=  {robots[i].email} /> 
      });
      return(
        <div>
          {cardComponent}
        </div>
      );
    }

    export default CardList;

这是 robots.js 文件,我仅将几个对象放入数组中,以便您了解。

export const robots = [
      {
        id: 1,
        name: 'Leanne Graham',
        username: 'Bret',
        email: '[email protected]'
      },
      {
        id: 2,
        name: 'Ervin Howell',
        username: 'Antonette',
        email: '[email protected]'
      },
      {
        id: 3,
        name: 'Clementine Bauch',
        username: 'Samantha',
        email: '[email protected]'
      }
    ];

这是 index.js 文件

import React from 'react';
    import ReactDOM from 'react-dom';
    import './index.css';
    import CardList from './CardList';
    import { robots } from './robots';
    import 'tachyons';
    import * as serviceWorker from './serviceWorker';

    ReactDOM.render(<CardList robots={'robots'}/>, document.getElementById('root'));

    serviceWorker.unregister();
2个回答

这里有一个拼写错误: ReactDOM.render(<CardList robots={'robots'}/>, document.getElementById('root'));

应该是: ReactDOM.render(<CardList robots={robots}/>,document.getElementById('root')); 其中 robots 是您要导入的变量的名称,而不是字符串。

Gaël S
2019-09-18

您传递的是一个字符串( 'robots' ),而不是从 './robots' 导入的数组( robots )。 因此, map 函数存在于 Array 的原型上,但不存在于 String 的原型上,这就是它抛出错误的原因。

要解决此问题,

<CardList robots={'robots'}/>

应替换为

<CardList robots={robots}/>

Raj Kumar Boddu
2019-09-18