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

标签 javascript reactjs ecmascript-6 es6-map

我正在使用Recharts构建一个图表库。图书馆。

这些是我正在处理的文件

数据装置是charts.js

const charts = [
  {name: 'Page A', uv: 4000, pv: 2400, amt: 2400},
  {name: 'Page B', uv: 3000, pv: 1398, amt: 2210},
  {name: 'Page C', uv: 2000, pv: 9800, amt: 2290},
  {name: 'Page D', uv: 2780, pv: 3908, amt: 2000},
  {name: 'Page E', uv: 1890, pv: 4800, amt: 2181},
  {name: 'Page F', uv: 2390, pv: 3800, amt: 2500},
  {name: 'Page G', uv: 3490, pv: 4300, amt: 2100},
];

export default charts;

数据与其余其他数据一起正确导入到我的商店中

然后我有我的ChartsGrid.js,错误来自于

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

export default class ChartsGrid extends React.Component{
  render() {
    return (
      <div className="grid">
        {this.props.charts.map((chart, i) => <Chart {...this.props} key={i} i={i} chart={chart} />)}
      </div>
    )
  }
};

这里是我的图表组件从 recharts 库导入模块

import React from 'react';
import { Link } from 'react-router';
import { ResponsiveContainer, LineChart, Line, XAxis, YAxis, ReferenceLine,
  ReferenceDot, Tooltip, CartesianGrid, Legend, Brush } from 'recharts';

export default class Chart extends React.Component {
  render () {
    const { chart, i} = this.props;
    return (
        <LineChart width={600} height={300} data={charts}
            margin={{top: 5, right: 30, left: 20, bottom: 5}}>
       <XAxis dataKey="name"/>
       <YAxis/>
       <CartesianGrid strokeDasharray="3 3"/>
       <Tooltip/>
       <Legend />
       <Line type="monotone" dataKey="pv" stroke="#8884d8" activeDot={{r: 8}}/>
       <Line type="monotone" dataKey="uv" stroke="#82ca9d" />
      </LineChart>
    );
  }
};

为什么会抛出此错误 TypeError: Cannot read property 'map' of undefined ?实际上未定义的是什么?

最佳答案

看起来您在使用 charts 数组之前尚未导入 charts.js 文件。

您可以导入使用 ChartsGrid 组件的 charts.js 文件,并将 charts 作为 prop 传递:

import charts from './charts'
...
<ChartsGrid charts={charts} />

或者,您可以直接在 ChartsGrid.js 中使用 charts 对象,而不是 this.props

import charts from './charts'

export default class ChartsGrid extends React.Component{
  render() {
    return (
      <div className="grid">
        {charts.map((chart, i) => 
          <Chart {...this.props} key={i} i={i} chart={chart} />)}
      </div>
    )
  }
}

注意 charts.map 而不是 this.props.charts.map 因为 charts 是直接导入到文件中而不是作为传递组件的 prop(如第一个解决方案)。

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

相关文章:

javascript - 如何将选定的单选按钮移动到左侧

javascript - 替换 HTML 字符串和避免标记(正则表达式)

javascript - 在 JavaScript 中匹配返回 null

javascript - 如何在React.js中提交表单时自动重新渲染列表

javascript - export default myVar 和 export default myFunc() 的区别

javascript - StandardJs + ES6 扩展类 - 无用的构造函数?

javascript - ES6 模板文字与串联字符串

javascript - jQuery 不能在我的网站上运行?

javascript - 使用 Enzyme 测试组合的 Reactjs 组件

javascript - Redux Saga select 不是一个函数