【问题标题】:Can somebody help me TypeError: Cannot read property 'map' of undefined有人可以帮我TypeError:无法读取未定义的属性“地图”
【发布时间】:2021-05-16 03:23:50
【问题描述】:

I am getting this error

** 这是我收到错误的文件**

import React from "react";
import ChartBar from "./ChartBar";

const Chart = props => {
  const dataPointValues = props.data.map(dataPoint => dataPoint.value);
  const totalMaximum = Math.max(...dataPointValues);

  return (
    <div className="chart">
      {props.data.map(dataPoint => (
        <ChartBar
          key={dataPoint.label}
          value={dataPoint.value}
          maxValue={totalMaximum}
          label={dataPoint.label}
        />
      ))}
    </div>
  );
};

export default Chart;

这是我在上面渲染组件的文件

import React from 'react';
import Chart from "../Chart/Chart";

const ExpensesChart = props => {

    const chartDataPoints = [
        {label: 'Jan', value:0},
        {label: 'Feb', value:0},
        {label: 'Mar', value:0},
        {label: 'Apr', value:0},
        {label: 'May', value:0},
        {label: 'Jun', value:0},
        {label: 'Jul', value:0},
        {label: 'Aug', value:0},
        {label: 'Sep', value:0},
        {label: 'Oct', value:0},
        {label: 'Nov', value:0},
        {label: 'Dec', value:0}
    ];

    for (const expense of props.expenses)
    {
        const expenseMonth = expense.date.getMonth(); //starting at 0 => January => 0
        chartDataPoints[expenseMonth].value += expense.amount;
    }

return (<Chart data={chartDataPoints}/>);
}

export default ExpensesChart;

任何帮助将不胜感激,我已经尝试了一切。这是我正在学习的一门课程,我重复了很多次视频,老师的代码和我的看起来一样。谢谢

【问题讨论】:

  • 这不是创建沙箱的方式。但是,试试 this sandbox 就可以了。
  • @AjeetShah 与您的沙箱有同样的错误
  • 这是你的沙盒外观pasteboard.co/K2dbCXD.png
  • 这很奇怪。这个对我有用。我不知道为什么它对你不起作用。在这种情况下,我会尝试很多方法 - 检查不同的浏览器、不同的笔记本电脑或尝试移动设备。

标签: javascript reactjs this


【解决方案1】:

我猜你可以通过使用 Chrome Devtool 断点来检查它为什么是 undefined 并查看 Chart 组件的数据道具是否是一个数组并解决它为什么是 undefined 的根本原因。

否则,为了避免这种TypeError,你至少可以用&&表达式来检查props.data是否是这样的数组。 p>

import React from "react";
import ChartBar from "./ChartBar";

const Chart = props => {
  const dataPointValues = Array.isArray(props?.data) && props.data.map(dataPoint => 
    dataPoint.value);
  const totalMaximum = Array.isArray(dataPointValues) && Math.max(...dataPointValues);

  return (
    <div className="chart">
      {Array.isArray(props?.data) && props.data.map(dataPoint => (
        <ChartBar
          key={dataPoint.label}
          value={dataPoint.value}
          maxValue={totalMaximum}
          label={dataPoint.label}
        />
      ))}
    </div>
  );
};

export default Chart;

【讨论】:

猜你喜欢
  • 2022-01-14
  • 2019-03-02
  • 1970-01-01
  • 1970-01-01
  • 2021-11-17
  • 2022-01-12
  • 2021-02-25
  • 2018-02-08
相关资源
最近更新 更多