ReactJS - 超级表达式必须为null或函数,而不是未定义。
ReactJS - 超级表达式必须为null或函数,而不是未定义。
我一直在跟随udemy上的一门课程,但无论我做什么都会出现一个错误:
这是组件的代码:
import React from 'react'; import { Component } from 'react'; import { connect } from 'react-redux'; import Chart from '../components/chart'; class WeatherList extends Component { constructor(props) { super(props); } renderWeather(cityData) { ... } render() { return ( ... ); } } function mapStateToProps(state) { return { weather: state.weather }; } export default connect(mapStateToProps)(WeatherList);
这是我导入的Chart组件:
import React from 'react'; import { Sparklines, SparklinesLine, SparklinesReferenceLine } from 'react-sparklines'; import _ from 'lodash'; function average(data) { return _.round(_.sum(data) / data.length); } const Chart = (props) => { return ({ average(props.data) } { props.units } ); }; export default Chart;
但显然React.Component未定义,所以会抛出一个错误。
在进一步检查后,发现问题出在Chart
组件中,因为在组件中尝试访问一个未定义的thisprops
对象。
所以,代替data={thisprops.data}
应该是:data={props.data}
。
我的React版本是14.9,在添加Chart组件之前一切都运行正常,至于代码,不重要,因为当我注释掉import Chart from 'url'
时,它不会抛出错误。所以我只展示了导致应用程序出错的部分。
我编辑了我的答案。尝试将您的Chart组件用具有命名default
导出的方式导出,而不仅仅是导出一个函数。另外,为什么不将整个Chart
组件代码发布出来,因为它是导致问题的原因?
我刚刚在问题中添加了文件的其余部分。
这个data={thisprops.data}
怎么样?它应该是data={props.data}
,显然是这样的。我已经更新了我的答案,作为解决这个问题的解决方案。
这只是因为我尝试将其转换为基于类的组件,然后它什么也没做,所以这是一个无关的问题。我仍然遇到同样的问题。谢谢你的尝试,但我认为这个问题没有解决办法。我很快就要关闭它了。
ReactJS - Super expression must either be null or a function, not undefined 这个问题的原因是由于 'react-sparklines' 版本过高导致的。解决方法是通过降级 'react-sparklines' 的版本。
具体的解决步骤如下:
1. 打开终端或命令行工具,进入项目所在的目录。
2. 输入以下命令,将 'react-sparklines' 的版本降级为 0.6.0:
npm i --save react-sparklines@0.6.0
3. 等待安装完成。
通过上述步骤,我们成功解决了 "ReactJS - Super expression must either be null or a function, not undefined" 这个问题。