javascript - React---类型错误: Cannot read property 'map' of undefined

标签 javascript reactjs dictionary

我正在关注react.js 教程,但在执行任务组件时,我不断遇到此错误“无法读取未定义的属性‘map’”。什么会导致这个错误? 任务组件

import React, { Component } from 'react';
import Task from './Task';

class Tasks extends Component{
    render() {
        return this.props.tasks.map(task => <Task task={task} key={task.id} />); 
    }
}

export default Tasks;

任务组件

import React, { Component } from 'react';

class Task extends Component {
    render(){
        const { task } = this.props;

        return <div>
           {task.title} - 
           {task.description} - 
           {task.done} - 
           {task.id}
            <input type="checkbox"/>
            <button>x</button>
        </div>
    }

}

export default Task;

非常感谢。

最佳答案

此错误“无法读取属性“map”” 意味着您尝试映射 undefined variable ,在您的情况下为变量tasks。示例:

// OK
let props = {
  tasks: ['a', 'b', 'c']
}
props.tasks.map(task => console.log(task)); // a, b, c

// Undefined
let props2 = {};
props2.tasks.map(task => console.log(task)); // Throw an error

在第一个示例中,您定义了变量tasks,因此 map 可以正常工作。

在第二个示例中,未定义tasks,因此当您尝试map时,会引发错误。

要解决这个问题,请在使用map之前验证变量是否存在:

let props = {};

// Using ternary operator
props.tasks ? props.tasks.map(task => console.log(task)) : console.log('Ok'); // Ok

// Using if
if (props.tasks) {
  props.tasks.map(task => console.log(task));
} else {
  console.log('Ok');
}

关于javascript - React---类型错误: Cannot read property 'map' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58845141/

相关文章:

reactjs - 在react.js中导出多个模块

json - 从 R 中的字典列表中提取数据

python - 需要查看类对象而不更改它

javascript - 使用重定向时,我的状态不会更新,所以我从不重定向

javascript - 希望在 JavaScript 中使 input=date 接受 DD/MM/YYYY 格式

javascript - 如何在不运行 ipfs 节点的情况下从 Javascript 应用程序使用 IPFS?

javascript - 如何获取按钮的值?

javascript - 从不同的 react 文件调用函数

reactjs - React中HOC封装的组件的访问功能

python - 有没有更有效的方法来迭代字典列表?