ReactJS - 超级表达式必须为空或函数,而不是未定义

Posted

技术标签:

【中文标题】ReactJS - 超级表达式必须为空或函数,而不是未定义【英文标题】:ReactJS - Super expression must either be null or a function, not undefined 【发布时间】:2018-01-21 10:23:54 【问题描述】:

我一直在学习有关 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);

这是我要导入的图表组件:

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 (
    <div>
      <Sparklines width=80 height=80 data=thisprops.data>
        <SparklinesLine color=props.color />
        <SparklinesReferenceLine type="avg" />
      </Sparklines>
      <div>
         average(props.data)   props.units 
      </div>
    </div>
  );
;
export default Chart;

但显然 React.Component 是未定义的,因此会引发错误。

【问题讨论】:

请尝试删除您的构造函数。根据 reactjs doc “如果您不初始化状态并且不绑定方法,则不需要为您的 React 组件实现构造函数。” GabrielDiez 还是抛出同样的错误,我只是在前面添加了构造函数,看看它是否有任何作用。 reactjs giving error Uncaught TypeError: Super expression must either be null or a function, not undefined的可能重复 Chart 文件名真的小写chart? 是的,错误与模块无关。 【参考方案1】:

我遇到了同样的问题。该错误是由于 'react-sparklines' 造成的。通过以下方式降级版本:

npm i --save react-sparklines@1.6.0.

【讨论】:

【参考方案2】:

经过进一步检查,问题似乎出在您的 Chart 组件中,因为您正尝试访问组件中未定义的 thisprops 对象。

所以,应该是:data=props.data,而不是 data=thisprops.data

【讨论】:

我的反应版本是@0.14.9,它运行一切都很完美,直到我添加了图表组件,至于代码,这并不重要,因为当我注释掉import Chart from 'url'时它没有不要抛出错误。所以我只展示破坏应用程序的部分。 我编辑了我的答案。尝试使用名为 default 的导出导出您的图表,而不是仅导出一个函数。另外,为什么不发布整个 Chart 组件代码,因为它是导致问题的代码? 我刚刚在问题中添加了文件的其余部分 这个怎么样 - data=thisprops.data?显然应该是data=props.data。我更新了我的答案作为这个问题的解决方案。 那只是因为我试图把它变成一个基于类的组件然后它什么也没做,所以这是一个不相关的问题。我仍然有同样的问题。谢谢你的尝试,但我认为这个问题没有解决办法。我很快就会关闭它

以上是关于ReactJS - 超级表达式必须为空或函数,而不是未定义的主要内容,如果未能解决你的问题,请参考以下文章

React Native - 超级表达式必须为空或函数,而不是未定义

总是收到错误“超级表达式必须为空或函数,而不是未定义。”当我导航到此页面时

如何确定中继查询是不是为空或未加载

Excel VBA 判断工作表是否为空或被使用过(比如设置过框线)

$.browser.msie' 为空或不是对象

QMessageLogContext 的字段(如:文件、函数、行)为空或为零