需要帮助让道具使用反应

Posted

技术标签:

【中文标题】需要帮助让道具使用反应【英文标题】:need help getting props to work using react 【发布时间】:2020-01-19 05:54:51 【问题描述】:

我正在构建这个 react 应用程序,但我无法让 id、name 和 email 属性正常工作。我正在尝试从我的 robots.js 文件中提取随机机器人图片、名称和电子邮件并将其显示在卡片上。任何帮助将不胜感激,这是我的代码

我不断收到此错误 TypeError: undefined is not an object (评估 '_robots__WEBPACK_IMPORTED_MODULE_4__["robots"][0]')

这是 index.js 文件

    import React from 'react';
    import ReactDOM from 'react-dom';
    import './index.css';
    import Card from './Card';
    import  robots  from './robots';
    import * as serviceWorker from './serviceWorker';

    ReactDOM.render(
                    <div>
                      <Card id=robots[0].id name=robots[0].name email=robots[0].email /> //it's saying this line of code is where the error is coming from
                      <Card id=robots[1].id name=robots[1].name email=robots[1].email />
                      <Card id=robots[2].id name=robots[2].name email=robots[2].email />
                    </div>
      , document.getElementById('root'));

    serviceWorker.unregister();

这里是 robots.js 文件,我只粘贴了数组中的一些对象,以便您了解

    export const robots = [
      
        id: 1,
        name: 'Leanne Graham',
        username: 'Bret',
        email: 'Sincere@april.biz'
      ,
      
        id: 2,
        name: 'Ervin Howell',
        username: 'Antonette',
        email: 'Shanna@melissa.tv'
      ,
      
        id: 3,
        name: 'Clementine Bauch',
        username: 'Samantha',
        email: 'Nathan@yesenia.net'
      ,
    ];

这是 Card.js 文件

    import React from 'react';
    import 'tachyons';

    const Card = (name, email, id) =>
      return(
        <div className="tc bg-light-green dib br3 pa3 ma2 grow bw2 shadow-5">
          <img alt='robots' src='https://robohash.org/$id?200x200' />
          <div>
            <h2>name</h2>
            <p>email</p>
          </div>
        </div>
      );
    

    export default Card;

【问题讨论】:

如果您也分享您的错误消息会很好 它也对我有用。 TypeError: undefined is not an object (evalating '_robots__WEBPACK_IMPORTED_MODULE_4__["robots"][0]') 这是我遇到的错误 你应该使用地图方法 ReactDOM.render() 【参考方案1】:

这是我提供的一个工作示例

https://codesandbox.io/s/react-example-xr4sf

【讨论】:

【参考方案2】:
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import Card from './Card';
import  robots  from './robots';
import * as serviceWorker from './serviceWorker';

ReactDOM.render(
    <div>
        robots.map(robot => <Card  key=robot.id id=robot.id name=robot.name email=robot.email />)
    </div>
, document.getElementById('root'));

    serviceWorker.unregister();

【讨论】:

TypeError: undefined is not an object (evalating '_robots__WEBPACK_IMPORTED_MODULE_4__["robots"].map') 不知道为什么。复制时似乎一切正常:CodeSandbox 我删除并重新下载了所有的 react 文件,现在包括我的原始代码在内的所有内容都可以正常工作【参考方案3】:

你应该使用 map 方法来运行你的对象

import React from 'react';
        import ReactDOM from 'react-dom';
        import './index.css';
        import Card from './Card';
        import  robots  from './robots';
        import * as serviceWorker from './serviceWorker';

        ReactDOM.render( <div>
           robots.map(obj => <Card id=obj.id name=obj.name email=obj.email />)
                        </div>, document.getElementById('root'));

        serviceWorker.unregister();

【讨论】:

【参考方案4】:

我最终删除并重新下载了所有反应文件,现在包括我的原始代码在内的所有内容都可以正常工作

【讨论】:

以上是关于需要帮助让道具使用反应的主要内容,如果未能解决你的问题,请参考以下文章

使用按钮上的道具路由到新组件单击反应

如何使用道具制作条件并反应动态主题?

使用 get API 调用反应全局状态/道具(没有 Redux)

在嵌套组件中反应组件道具

反应:作为道具的数组显示为未定义

当用户输入通过来自另一个组件的道具的文本时,在反应 js 中不起作用